我使用以下代码:
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
列中存在EXACT匹配,EXACT匹配也不会显示第8个结果。前面的那些都有这个短语,但也有一些跟随文本。我检查了locn
,gns
字段,看看他们是如何比较的,没有什么能让其他人得分更高。
我做了一些关于使用BOOLEAN MODE
的阅读,但我在那里看到的任何内容似乎都无法满足我的需求。
答案 0 :(得分:2)
好的,如果这有助于其他任何人,我可以通过这样做实现我想要的目标:
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;