mysql MATCH 相关性评分

Chr*_*nch 4 mysql full-text-search

我认为这是一个很容易通过谷歌搜索的问题;但我找不到它。

给出以下查询:

SELECT name, MATCH (name) AGAINST ('vision black*' IN BOOLEAN MODE) as rel 
FROM (`phppos_items`) 
WHERE MATCH (name) AGAINST ('vision black*' IN BOOLEAN MODE) AND `deleted` = 0
ORDER BY `rel` DESC LIMIT 100
Run Code Online (Sandbox Code Playgroud)

匹配分数越高是否相关性越高?有人能给我指出正确的 mysql 手册页来解释这一点吗?

根据简单的观察,分数越高似乎越好。

Rol*_*DBA 6

自然语言全文搜索下的 MySQL 文档

第 1 款

默认情况下或使用 IN NATURAL LANGUAGE MODE 修饰符时,MATCH()函数针对文本集合对字符串执行自然语言搜索。集合是包含在 FULLTEXT 索引中的一组或多列列。搜索字符串作为AGAINST()的参数给出。*对于表中的每一行,**MATCH()返回一个相关值;也就是说,搜索字符串与MATCH()列表***中指定的列中该行中的文本之间的相似性度量。

第 3 段

当在 WHERE 子句中使用MATCH()时(如前面的示例所示),返回的行会自动按照相关性最高的优先进行排序。相关性值是非负浮点数。零相关性意味着没有相似性。相关性是根据行中的单词数、该行中的唯一单词数、集合中的单词总数以及包含特定单词的文档(行)数来计算的

进行布尔搜索时,MATCH()将返回 0 或 1。

MyISAM 用户注意事项

您可以针对 MyISAM 表使用myisam_ftdump实用程序来获取单词及其频率的完整列表。

InnoDB 用户注意事项

Relevancy Rankings for InnoDB Boolean Mode SearchMySQL 文档(布尔全文搜索)的副标题下有关于 InnoDB 如何计算布尔全文搜索中的相关性的精彩解释