我想了解MATCH AGAINST背后的情况 它返回0到10的分数,但我不明白标准。我只是能够看到尝试匹配它返回0.0906190574169159的确切字符串,而如果字符串根本不包含它返回0.任何启发?
答案 0 :(得分:0)
所以我说读了这个,但你说它还不够:dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.ht ml
相关段落是:
&#34;当在WHERE子句中使用MATCH()时,如前面所示的示例,返回的行将首先自动排序,具有最高的相关性。相关性值是非负浮点数。零相关意味着没有相似性。相关性的计算基于行(文档)中的单词数,行中唯一单词的数量,集合中单词的总数以及包含特定单词的行数。&#34; < / p>
如果您在该页面上执行示例表和插入并运行此查询:
SELECT MATCH (title,body)
AGAINST ('database' IN NATURAL LANGUAGE MODE) FROM articles;
你得到:
+--------------------------------------------------------------------------+
| MATCH (title,body)
AGAINST ('database' IN NATURAL LANGUAGE MODE) |
+--------------------------------------------------------------------------+
| 0.22764469683170319 |
| 0 |
| 0 |
| 0 |
| 0.22764469683170319 |
| 0 |
+--------------------------------------------------------------------------+
对于返回零的行,没有匹配,对于其他行,该值是基于&#34; good&#34;的排名。它认为比赛是。在这种情况下,匹配是相同的,因此值是相同的。相反,你跑了:
SELECT MATCH (title,body) AGAINST ('Database comparison' IN NATURAL LANGUAGE MODE) FROM articles;
你得到:
+--------------------+
| 0.0906190574169159 |
| 0 |
| 0 |
| 0 |
| 0.6961383819580078 |
| 0 |
+--------------------+
请注意,现在值不同了。第一个非零结果得分较低,因为其中只有一些现在匹配,而另一个得分高得多表示匹配更好。