我使用下面的代码,例如:
SELECT *, (MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker')) AS score FROM `example_table` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker')) order by score DESC;
然而,即使在wm
列中存在精确匹配,精确匹配直到第8个结果才出现。在它前面的都有这个短语,但也有一些下面的文字。我检查了locn
, gns
字段,看看它们是如何比较的,没有什么真正突出的,应该使其他得分更高。
我做了一些关于使用BOOLEAN MODE
的阅读,但我在那里读到的似乎没有什么能帮助我的需求。
好的,如果这对其他人有帮助的话,我可以这样做来实现我想要的:
SELECT *,
CASE WHEN wm = 'foot locker' THEN 1 ELSE 0 END AS score,
MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker') AS score2
FROM
`example_table`
WHERE
MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker'))
ORDER BY
score DESC, score2 DESC;