2012-07-09 43 views
2

我越来越SQL和Lucene给出下面的查询之间完全不同的排名/评分:lucene的VS SQL结果得分

[伪代码](内的3 statut *解释*)和抵触

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

我该如何解释这种显着的差异?

+2

'我该如何解释这种显着的差异?'您认为两种不同的产品应该使用相似的排名/评分算法的原因是什么?只要用你喜欢的任何东西。或者开发你自己的评分算法并在Lucene.Net中使用它(我不认为这很容易) – 2012-07-09 21:04:20

回答

2

the documentation on MSDN titled "How Search Query Results Are Ranked"(重点煤矿):

全文在SQL Server中的搜索可以产生可选分数(或排名 值),表示由 全文查询返回的数据的相关性。该排名值是在每一行上计算的,并且可以是 ,用作排序条件以通过相关性排序给定查询的结果集合 。等级值仅指示结果集中行的相关顺序 。 实际值是 不重要,每次查询运行时通常都会有所不同。排名 的值在查询之间不存在任何意义。

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

与此相比,scoring in Lucene,这完全取决于你如何索引的文件,文件和/或字段是否被提升,过滤器等

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

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