我目前正在使用类似的自动完成框查询。但是我想使用匹配,它应该更快,但我遇到了一些排序问题。
我想对这样的查询进行排名:
- [询问] %
- [询问]%
- % [询问]%
- %[询问]%
现在我使用
SELECT * FROM table
WHERE name LIKE '%query%'
ORDER BY (case
WHEN name LIKE 'query %' THEN 1
WHEN name LIKE 'query%' THEN 2
WHEN name LIKE '% query%' THEN 3
ELSE 4 END) ASC
当我使用...
SELECT * FROM table
WHERE MATCH(name) AGAINST('query*' IN BOOLEAN MODE)
...所有结果都获得相同的“排名分数”。
例如,搜索Natio
返回Pilanesberg National Park
并National Park Kruger
具有相同的分数,而我希望第二个结果作为第一个结果,因为它以查询开头。
我怎样才能做到这一点?