我今天在使用 mysqls MATCH()...AGAINST() 时遇到了问题。
因为我想解决我的问题可能更容易,所以我创建了一个小的SQLFiddle。
我完全理解,为什么“Foo Bar Foo”在这个 Select 语句的工作方式上比“Foo Bar”更相关。但我想要的是“完全匹配”术语的相关性高于“完全匹配和更多”术语。
title relevance
Foo Bar 0.046829063445329666
Foo Bar Foo 0.031219376251101494
Foo 0
Bar 0
如果不使用“联合”来组合两个语句,这个结果是否可能?
答案(感谢 Gordon Linoff):
SELECT *
FROM FOOBAR
WHERE title LIKE '%Foo Bar%'
ORDER BY (CASE WHEN title LIKE 'Foo Bar%' THEN 1 ELSE 0 end) DESC,
MATCH (title) AGAINST ('Foo Bar' IN BOOLEAN MODE) ASC