MySQL全文搜索分数解释

标签 mysql full-text-search

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

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 吗?

希望大家多多指教。谢谢。

最佳答案

以查询“word1 word2”为例。

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

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

关于MySQL全文搜索分数解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/230129/

相关文章:

php - PHP删除自

php - Doctrine 加入一张 table 有两个

mysql - Grails 2.3.2 : findOrCreate using Enums in Bootstrap

go - XML 文件的部分索引 (Bleve)

machine-learning - 计算具有两个以上字符串的查询的平均逐点信息?

php - Laravel 按年份和月份生成存档帖子

php - 具有多表关系的 Yii 作用域

android - Android 上的 SQLite 是否使用为 FTS 启用的 ICU 分词器构建?

用于检查重复字符/虚假文本的php代码

nhibernate - PostgreSQL 全文搜索与 NHibernate.Search 通过 Lucene.Net