MySQL全文搜索分数解释

时间:2008-10-23 15:16:24

标签: mysql full-text-search

我最近一直在尝试全文搜索,并对分数值的含义感到好奇。例如,我有以下查询:

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

在得分的结果中,我看到一个查询的结果,在0.4667041301727到11.166275978088之间。我认为这是MySQL相关的想法(权重越高)。

我没有得到的是MySQL如何得出这个分数。为什么数字不作为小数或其他东西返回?

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

希望得到一些启示。感谢。

2 个答案:

答案 0 :(得分:10)

以查询“word1 word2”为例。

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

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

答案 1 :(得分:7)

一般来说,相关性取决于每行与搜索词的匹配程度。确切的值取决于很多事情,但它实际上只对比较同一查询中的其他相关值。

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