solr进阶

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lxy344x/article/details/74010867

      之前对solr只是简单的认识,这次从17年9月至18年2月对公司搜索业务进行了维护,伴随着各种业务的实现,对solr有了更为深入的认知,至此对solr做一些总结。

      solr作为内存的数据库,面对复杂业务的查询借助solr进行处理,下面将从 创建索引,检索,排序等方面做概要总结。

      (一)创建索引,索引的创建需要注意一下几点:

         1、包含必要的检索字段,无效字段尽量减少,防止数据量过大时造成IO的占用。(如果数据量不可避免,可以拷贝data);

        2、选择分词的工具,solr提供了基础的分词,但是分词粒度比较细,基本没有意义。可以才用mmseg4j,ik analyzer等进行中文分词。对于不同的字段可根据业务含义进行分词,比如数字,布尔类型可以不进行分词。

       3、修改solr model 或者scheme.xml  中字段的顺序时会造成 field "title_ngram" was indexed without position data; cannot run PhraseQuery    错误,解决方式 field中配置 omitTermFreqAndPositions="false";

        4、全量或增量更新索引库时,solr有三种提交方式,①、直接使用api的commit方式,性能比较慢;②、AutoCommit,根据跟新次数来进行更新;③、commitWithin,指定多少时间后执行提交。

       (二)检索策略,检索作为solr的核心功能,依据上面的分词结果进行检索,可以从以下方面考虑,特殊query识别 如(),同义词,近义词,主体识别,意图识别,自然语言识别NLP,短语查询等QA策略。

       (三)排序策略,人工干预,比如 添加标签;搜索相关性,比如共同的好友,行业等类似,活跃度。solr中提供了两种查询解析器DisMax,eDisMax可以实现指定多字段查询,并分配查询权重,比如 可以通过设置bf,qf,qs等参数配置排序的优先级。

       (四)个性推荐,solr中提供了moreLikeThis,可以根据指定影响因素进行筛选和排序。

       (五)切面统计,高亮不再赘述。

                  

       上图为solr的架构图,上面的概述只是提到了工作中遇到一些问题,通过上图可以宏观了解solr的各个方面。现在有很大一部分公司使用ES做数据和业务检索,solr中主要提供了很多开箱即用的功能。

猜你喜欢

转载自blog.csdn.net/lxy344x/article/details/74010867
今日推荐