2008-10-23 44 views
13

我一直在尝试全文搜索,并且很好奇Score值的含义。例如,我有以下查询:MySQL全文搜索分数解释

SELECT table. * , 
MATCH (
col1, col2, col3 
) 
AGAINST (
'+(Term1) +(Term1)' 
) AS Score 
FROM table 
WHERE MATCH (
col1, col2, col3 
) 
AGAINST (
'+(Term1) +(Term1)' 
) 

在结果分数我已经看到了结果,对于一个查询,以11.166275978088 0.4667041301727之间。我知道这是MySQL关联的想法(重量越高)。

我没有得到的是MySQL如何得到该分数。为什么数字不是以小数或其他方式返回?

如果我运行查询“IN BOOLEAN MODE”,得分总是返回1还是0?所有的结果都不是1吗?

只是希望一些启示。谢谢。

回答

6

通常,相关性基于每行与搜索词相匹配的次数。确切的值将取决于很多事情,但它确实只是在同一个查询中与其他相关值进行比较而言很重要。

如果你真的想要它背后的数学,你可以在internals manual找到它。

+0

我可以向客户显示值11.166275978088为“相关性11%”吗? – 2009-05-18 17:37:07

9

以查询“word1 word2”为例。

BOOLEAN模式表示您的整个查询与文档匹配(例如,它包含word1和word2)。布尔模式是严格匹配的。

通常使用的公式是基于向量空间模型的搜索。非常简单,它会计算出两个度量来确定一个单词对查询的重要程度。术语频率(在文档中经常出现的术语比其他术语更重要)和逆文档频率(许多文档中出现的术语的权重低于少数文档中出现的术语)。这被称为​​,并被用作向量空间模型的基础。这些分数构成了Vector Space Model的基础,其他人可以彻底解释。 :)