14

我最近一直在尝试全文搜索,并对 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吗?

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

4

2 回答 2

12

以查询“word1 word2”为例。

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

通常使用的公式是基于搜索的向量空间模型。非常简化,它找出了两种衡量一个词对查询的重要性的方法。词频(文档中经常出现的词比其他词更重要)和逆文档频率(出现在许多文档中的词的权重低于出现在少数文档中的词)。这称为tf-idf,用作向量空间模型的基础。这些分数构成了向量空间模型的基础,其他人可以彻底解释。:)

于 2008-10-24T11:57:54.770 回答
8

一般来说,相关性是基于每行与搜索的单词有多少匹配。确切的值将取决于很多事情,但它只在与同一查询中的其他相关值进行比较时才有意义。

如果你真的想要它背后的数学,你可以在内部手册中找到它。

于 2008-10-23T15:36:41.377 回答