Solr使用的开源排名算法

时间:2014-06-12 07:12:43

标签: solr

我正在研究Solr。我想知道它在输出查询时使用的排名算法。我也在使用Solr搜索。

1 个答案:

答案 0 :(得分:1)

Solr使用Lucene Core(一种用Java编写的文本搜索库)进行文本搜索。这是同样为Elasticsearch提供支持的项目,因此这里的所有内容也适用于Elasticsearch。

核心排名算法(也称为相似度算法)基于术语频率/逆文档频率,或简称为tf/idf。 td / idf考虑以下因素:

(我在下面的Elasticsearch文档中对tf / idf的描述进行了复制 - 对于Solr来说,描述是相同的,但是编写得更好,更容易理解)

  

学期频率

     

该字词在该字段中出现的频率是多少?越频繁,越多   相关。包含同一术语的五个提及的字段更多   可能与仅包含一个提及的字段相关。

     

反向文档频率

     

每个词在索引中出现的频率是多少?越频繁,越少   相关。许多文档中出现的术语的权重低于   更多不寻常的条款。

     

字段规范

     

这个领域有多长?它越长,它就越不可能   该领域的文字将是相关的。短名称中出现的术语   田野比长期出现的同一个词更重要   内容领域。

您可以在此处找到Lucene相似性评分的具体内容:http://lucene.apache.org/core/4_6_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html

请记住,Solr / Lucene支持丰富的功能来改变这个得分。在关于Lucene评分的讨论中,最好阅读here

如果你想了解更多关于得分以及如何改变的话,我将从这里开始:

http://wiki.apache.org/solr/SolrRelevancyFAQ

然后我会读一下函数查询的内容:

  

FunctionQuery允许使用字段的实际值和   相关性得分中这些字段的功能。

基本上它为您提供了一种相对容易使用的机制,可以根据某些字段中的值调整文档的相关性得分:

http://wiki.apache.org/solr/FunctionQuery