`
san_yun
  • 浏览: 2652099 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Solr搜索的排序打分规则

    博客分类:
  • solr
 
阅读更多

使用Solr搭建搜索引擎很容易,但是如何制定合理的打分规则(boost)做排序却是一个很头痛的事情。Solr本身的排序打分规则是继承自 Lucene的文本相关度的打分即boost,这一套算法对于通用的提供全文检索的服务来讲,已经够用了,但是对于一些专门领域的搜索来讲,文本相关度的 打分是不合适的。
如何来定制适合自身业务的排序打分规则(boost)呢?经过这段时间的思考与实践,想到了如下三个方法

  • 1、定制Lucene的boost算法,加入自己希望的业务规则;
  • 2、使用Solr的edismax实现的方法,通过bf查询配置来影响boost打分。
  • 3、在建索引的schema时设置一个字段做排序字段,通过它来影响文档的总体boost打分。

上面每一种方法都有其优劣,下面分析一下各自的优劣。

  • 第一种方法技术难度要求较高,需要读懂Lucene的boost打分算法,在代码层做定制.
  • 第二种方式就简单不少,不过因为受限于edismax提供的方法,所以有些局限性。
  • 第三种排序可完全消除文本相关性打分的影响,文本检索匹配逻辑只负责找到匹配的项,排序由自定义字段处理。

下面结合最近使用Solr的实践,着重介绍一下通过使用Solr的DisMaxQParserPlugin通过配置来制定结果文档打分规则。
DisMaxQParserPlugin提供在针对文本boost打分上,支持搜索多个schema索引字段,并针对每一个字段设置不同的boost权限。
pf查询 与 qf查询
pf: 可提供对一条记录的多个字段做匹配的功能
qf: 针对查询的每个字段设置不同的boost权重打分,其设置的字段必须为在pf中配置的项。

<requestHandler name="/browse" class="solr.SearchHandler">
<lst name="defaults">
<str name="defType">edismax</str>
<str name="pf">
name info title
</str>
<str name="qf">
name^1 info^0.8 title^0.6
</str>
</lst>
</requestHandler> 

 上面一段的意思是,查询name,info,title三个字段,每个字段的文本相关度打分权重分别为1,0.8,0.6。计算查询出的每一条结果的权重方法如下:分别计算各字段的文本打分然后乘于配置的权重,最后三者相加即为该结果的boost得分。

 

bf查询
除去pf查询,qf查询之外,仍然希望索引记录的其它字段能够计入打分中,这时可以使用bf查询。bf查询支持一些数据函数,这些函数可作用在索引记录的字段上,多为时间,数值等字段。同样bf也支持添加权重。下面是一个使用bf查询配置的例子:

 

<requestHandler name="/browse" class="solr.SearchHandler">
<lst name="defaults">
<str name="defType">edismax</str>
<str name="bf">
sum(recip(ms(NOW,created_time),3.16e-11,1,1),sqrt(log(max(sales,1))),sqrt(log(count)))^10
</str>
<str name="pf">
name info title
</str>
<str name="qf">
name^1 info^0.8 title^0.6
</str>
</lst>
</requestHandler>

 其中sum,recip,ms,sqrt, log,max这些都是Solr提供的数学方法,支持的所有数学方法可在这里查找到:http://wiki.apache.org/solr/FunctionQuery
edismax相关资源:http://wiki.apache.org/solr/DisMaxQParserPlugin

分享到:
评论

相关推荐

    solr导航搜索工具+文档+配置代码

    5. 自定义排序和评分:用户可以根据需求定制排序规则和评分机制,提升搜索结果的相关性。 6. 多语言支持:Solr内置了多种语言的分词器,能够处理多种语言的搜索请求。 二、Solr的基本架构 Solr架构主要由以下组件...

    京东solr全局搜索

    Solr允许自定义排序规则,如基于销量、价格、用户评价等多维度的排序策略。 4. **高亮显示**:Solr可以自动识别查询关键词在结果中的位置,并进行高亮,帮助用户快速定位关键词。 5. **分面搜索**:在京东的搜索...

    solr-6.2.0源码

    5. 自定义排序和评分:用户可以自定义文档排序规则和评分算法,以满足特定的业务需求。 6. 多语言支持:Solr内置了多种语言分析器,支持不同语言的全文搜索。 7. 高亮显示:Solr可以高亮显示搜索结果中的关键词,...

    Solr评分整理汇总.docx

    Solr 的 DisMaxQParserPlugin 通过配置来制定结果文档打分规则,提供在针对文本 boost 打分上,支持搜索多个 schema 索引字段,并针对每一个字段设置不同的 boost 权限。 在 Solr 中,文档得分是一个用来描述查询...

    solr-8.0.0.tgz

    6. **配置灵活性**:Solr的配置文件允许用户根据需求定制索引和查询行为,例如设置评分算法、过滤器和排序规则。 7. **结果集排序和剪枝**:Solr允许用户根据相关度或其他自定义因素对搜索结果进行排序,并且可以...

    人工智能-项目实践-搜索引擎-solr构建景点搜索引擎

    5. **排序与评分**:定义搜索结果的排序规则,比如可以根据景点的评分、访问量等进行排序。Solr的`df`参数用于指定默认搜索字段,`qf`参数定义哪些字段参与评分。 6. ** faceting(聚类)**:Solr的分面搜索功能...

    solr-dataimport-scheduler.jar 可使用于solr7.x版本

    Solr能够对大量数据进行快速的全文检索,同时支持多字段排序、分面搜索和自定义评分策略。为了保持索引与源数据的一致性,Solr引入了DIH,这是一个内建的机制,用于从关系数据库、XML文件等外部数据源导入数据,并将...

    solr-8.1.1-src.tgz

    6. **搜索结果排序与评分**: - 可以自定义排序规则,基于相关性、时间戳或其他属性。 - `tf-idf`是默认的评分算法,可通过修改查询参数调整。 7. ** faceting(分面搜索)**: - 提供强大的分面导航功能,帮助...

    solr4.6.0 源代码

    Solr的核心是Lucene库,这是一个强大的全文搜索引擎库,但Solr在Lucene的基础上提供了更多高级特性,如分布式搜索、集群支持、多核心管理、自定义排序和高亮显示等。 源代码分析: 1. **索引构建与查询处理**: ...

    solr全文检索中需要用到的apache-solr-1.4.1.zip

    - **结果评分**:Solr提供TF-IDF算法计算文档的相关性,并返回最相关的搜索结果。 在“apache-solr-1.4.1”目录下,通常会包含以下文件和目录: - **bin**:存放启动和管理Solr的脚本,如`solr`命令行工具。 - *...

    apache-solr-3.5.0.tgz

    同时,可以自定义排序规则,如基于字段值、评分或自定义脚本。 6. **分布式搜索**:Solr 3.5.0支持分布式搜索,通过分片和复制技术,可以在多台机器上分布索引,提高查询性能和可用性。 7. **高亮显示**:Solr能够...

    开源企业搜索引擎solr的应用教程

    Schema是Solr的核心概念之一,它定义了文档的字段类型、分词器、排序规则等,确保数据的一致性和准确性。 1.2.3 查询 Solr支持复杂的查询语法,包括布尔逻辑、短语匹配、近似搜索、高亮显示等,同时提供查询建议和...

    最新版linux solr-8.5.2.tgz

    3. 结果排名:根据相关性评分算法,对搜索结果进行排序。 4. 高级特性:支持 faceting(分面搜索)、highlighting(高亮显示)、spell checking(拼写检查)等。 四、SolrCloud 集群管理 1. ZooKeeper 集群协调:...

    Solr 查询,索引

    3. **查询优化**:Solr会根据查询条件和索引结构自动优化查询计划,包括使用倒排索引来快速定位匹配文档,以及对查询结果进行评分排序。 4. **高亮显示**:Solr能够对查询结果中的匹配词进行高亮,提高用户查找相关...

    solr6.1.0安装包

    Solr的核心功能包括全文索引、近实时搜索、多字段排序、高亮显示搜索结果、分布式搜索以及多种数据处理功能。它允许用户通过HTTP接口(通常是RESTful API)与Solr服务器进行交互,这使得集成到各种应用程序中变得...

    solr-4-10.3.zip

    3. **查询与排序**: Solr提供了丰富的查询语法,包括布尔查询、短语查询、范围查询等,同时支持自定义排序规则,可以根据多个字段或复杂的评分函数进行排序。 4. **字段类型与分析**: Solr允许用户定义不同的字段...

    solr 搭建和使用

    4. 排序与评分:Solr允许自定义排序规则,根据不同的字段或评分算法对结果进行排序。 5. 自定义分析器:Solr支持自定义分析流程,如分词、去除停用词、词形还原等,以适应特定的语言和数据。 总结,Solr是一个强大...

    Relevant search with applications for Solr and Elasticsearch

    - **核心技术**:比如如何利用术语频率分布来改进搜索结果的排序、如何处理同义词等问题。 - **应用场景**:探讨了这种搜索策略在新闻聚合、学术研究等领域的应用案例。 7. **塑造相关性** - **定制化相关性**...

    apache-solr-ref-guide-7.4(官方英文-文字版本)

    10. **查询重排序**:介绍了如何使用机器学习等技术对查询结果进行重新排序,以提高搜索质量。 11. **转换结果文档**:提供了如何将查询结果转换为其他格式的方法。 12. **建议器**:解释了 Solr 的建议器功能,...

    Solr 样例应用程序:j-solr1.zip

    Solr 提供了强大的全文检索、命中高亮、拼写检查、相关性排序等功能,广泛应用于网站、电子商务、企业内部文档搜索等多个场景。 "j-solr1.zip"这个压缩包文件,很可能是Solr的一个特定版本或者样例集合,用于帮助...

Global site tag (gtag.js) - Google Analytics