2

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

[伪代码](解释 * 的 3 内的 statut*)和矛盾

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

我该如何解释这种重大差异?

4

1 回答 1

2

MSDN 上标题为“搜索查询结果如何排名”的文档(强调我的):

SQL Server 中的全文搜索可以生成一个可选的分数(或排名值),用于指示全文查询返回的数据的相关性。此排名值在每一行上计算,并可用作排序标准,以按相关性对给定查询的结果集进行排序。排名值仅指示结果集中行的相对相关顺序。实际值并不重要,并且每次运行查询时通常都会有所不同。rank 值在查询中没有任何意义

也就是说,SQL 全文搜索对结果没有真正的价值;它与结果中的其他行相关的唯一值。

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

Lucene 中的评分也是一致的,这与 SQL Server 不同,后者没有任何保证。它甚至反映在名称中,SQL Server 中全文查询的结果是排名值而不是分数,就像在 Lucene 中一样。

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

于 2012-08-21T15:12:43.690 回答