lucene vs sql结果评分

时间:2012-07-09 20:17:34

标签: sql lucene full-text-search lucene.net sql-server-2012

鉴于以下查询,我在SQL和Lucene之间得到了截然不同的排名/得分:

[伪代码](法律*在解释3之内)和矛盾

我不认为这是解析器的问题,因为所有结果似乎都符合查询要求。但是,在前1000个结果中,我只得到172个常见结果。由于Lucene和SQL的所有结果似乎都符合查询要求,我唯一的猜测是得分在某种程度上完全不同。我很难找到有关SQL如何处理评分的任何信息,也没有找到比较SQL和Lucene评分的信息。我不一定期望从两个引擎得到相同的结果集,但我期望相似性超过10%,我至少能够解释这个巨大的差异。

我如何解释这一重大差异?

1 个答案:

答案 0 :(得分:2)

来自the documentation on MSDN titled "How Search Query Results Are Ranked"(强调我的):

  

SQL Server中的全文搜索可以生成可选分数(或排名   value)表示a返回的数据的相关性   全文查询。该等级值在每一行上计算得出   用作排序标准来对给定查询的结果集进行排序   相关性。等级值仅表示相对的顺序   结果集中行的相关性。 实际值是   每次运行查询时都不重要且通常不同。排名   值不会对查询产生任何影响

那就是说,SQL全文搜索将的结果没有实际价值;它与结果中其他行相关的唯一值。

将其与scoring in Lucene进行比较,这完全取决于您如何索引文档,文档和/或字段是否被提升,过滤等等。

Lucene中的得分也是一致的,不像SQL服务器那样,没有任何保证。它甚至反映在名称中,SQL Server中全文查询的结果是 rank 值而不是分数,就像在Lucene中一样。

这些值不完全可比,但这是可以理解的,因为结果也不一样。