MySQL全文搜索分数解释
我一直在尝试全文搜索,并对Score值的含义感到好奇。 例如,我有以下查询:
SELECT table. * ,
MATCH (
col1, col2, col3
)
AGAINST (
'+(Term1) +(Term1)'
) AS Score
FROM table
WHERE MATCH (
col1, col2, col3
)
AGAINST (
'+(Term1) +(Term1)'
)
在Score的结果中,我看到了一个查询的结果,在0.4667041301727到11.166275978088之间。 我知道这是MySQL关联的想法(重量越高)。
我没有得到的是MySQL如何获得该分数。 为什么数字不是以小数或其他方式返回?
如果我运行查询“IN BOOLEAN MODE”,得分总是返回1还是0? 所有的结果都不是1吗?
只是希望一些启发。 谢谢。
通常,相关性基于每行与搜索词相匹配的次数。 确切的值将取决于很多事情,但它确实只是在同一个查询中与其他相关值进行比较而言很重要。
如果你真的想要它背后的数学,你可以在内部手册中找到它。
以查询“word1 word2”为例。
BOOLEAN模式表示您的整个查询与文档匹配(例如,它包含word1和word2)。 布尔模式是严格匹配的。
通常使用的公式是基于搜索的向量空间模型。 非常简单,它会计算出两个度量来确定一个单词对查询的重要程度。 术语频率(在文档中经常出现的术语比其他术语更重要)和逆文档频率(许多文档中出现的术语的权重低于少数文档中出现的术语)。 这被称为tf-idf,并被用作向量空间模型的基础。 这些分数构成了Vector Space Model的基础,其他人可以对其进行彻底解释。 :)
链接地址: http://www.djcxy.com/p/2105.html