MySQL全文搜索分数说明

MySQL全文搜索分数说明,mysql,full-text-search,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)' ) 在Score的结果中,我看到了一个查询的结果,介于0.4667041301727到11.1662759

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

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之间。我知道这是MySQLs关于相关性的想法(越高,权重越大)

我不明白MySQL是如何得出这个分数的。为什么这个数字不以十进制或其他形式返回

为什么如果我在“布尔模式”下运行查询,分数总是返回1或0?不是所有的结果都是1吗


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

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

如果你真的想知道它背后的数学原理,你可以在下面找到它。

以查询“word1 word2”为例

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


通常使用的公式基于搜索的向量空间模型。非常简单的是,它找出了两个度量来确定一个单词对查询的重要性。术语频率(文档中经常出现的术语比其他术语更重要)和反向文档频率(许多文档中出现的术语的权重低于少数文档中出现的术语)。这称为,并用作向量空间模型的基础。这些分数构成了测试的基础,其他人可以详细解释。:)

我可以向客户显示11.166275978088的值为“相关性11%”吗?这是个坏主意……这样不准确。。。no@se_pavel相反,我认为你可以做的是得到分数的总和,除以11.1662xx。。然后乘以100。如果我的数学不是乱七八糟的,你应该能够很容易地得到相关百分比。示例:11/159.399*100=6.90092158671%