我已经查看了mysql的布尔全文搜索文档,并且有书面说,MATCH将返回一个浮点值以及一个示例。在其他地方,我发现对此的引用状态相同,MATCH将按相关性分数返回浮点数。为什么MATCH返回整数相关性而不是float
但是当我运行此查询
select
match(j.name) against('banana* strawberr* coconut*' IN BOOLEAN MODE) as score
from juices j
order by score desc
我得到0或者为1。
这是一些线与1为得分:
"Banana and strawberry flavor"
"Apple and banana juice"
"Coconuts with pickles"
在我的理解是,“香蕉和草莓”系列应该得到比其他两个更高的分数,因为有两个词匹配?
计算相关性的方式取决于您是否在进行BOOLEAN搜索以及使用的是哪个表引擎。 – CBroe
在这种情况下,表引擎是MyISAM。关于布尔搜索。据我所知,默认的操作符是OR(编辑:文档指出,当没有指定+或 - 时,该字是可选的) – Ello
您的查询实际上不会过滤任何不匹配的行。 '...匹配(......)反对(...在BOOLEAN模式中)'会排除这个有点神奇的双重目的表达式计算为0(假)的行。唯一的其他可能的布尔结果是1. –