我有用户数据库表:
|firstname|lastname|username|Country|id|
------------------------------------------------
|Ricky |Jonh |rjohn |USA |1 |
|Mery |Cris |mcris |USA |2 |
|Ricky |Cris |rcris |Germany|3 |
|Michacle |Ricky |mricky |USA |4 |
|Michacle |Jonh |john |USA |5 |
如果用户输入:
“ Ricky”-搜索应返回3条记录(1、3、4)
“ Ricky USA”-应该返回2条记录(因为只有第一条和第三条记录的列中包含这些字词)
“ Ricky John USA”-仅返回第一条记录。
因此,搜索应返回记录,其中每个搜索词应在一个记录中,但可以在不同的列中。
有人可以分享一种方法如何在MySQL上实现这种搜索。
谢谢,琼斯
这是一个解决方案
SELECT *,
MATCH (firstname, lastname, username, Country)
AGAINST ('+Ricky +Cris +Germany' IN boolean MODE) AS score
FROM user
WHERE MATCH (firstname, lastname, username, Country)
AGAINST ('+Ricky +Cris +Germany' IN boolean MODE)
ORDER BY score DESC
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句