我已經查看了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. –