我在使用 php(或 mysql)搜索功能时遇到了困难。 我愿意为此购买一个脚本,但我找不到。
我有一个客户表(名字、姓氏、街道、 zip 、城市等……) 我希望不仅能够查找一个关键字,而且能够查找 2 IN 2 不同的列。
例如:
关键字:“李四”
所以我的尝试是。
SELECT ....
WHERE CONCAT(firstname,lastname) LIKE '%john%'
AND CONCAT(firstname,lastname LIKE '%doe%'
但是:这让我返回了所有的 johns 和 does,而 John Doe 先生在该列表中的某个位置,但不在最前面,尽管它应该是最相关的结果。
我也试过:
....
WHERE MATCH(firstname,lastname) AGAINST('%john doe%')
这几乎会返回相同的结果。
所以我正在寻找的结果是:
1. John Doe (at first position!)
2. John Miller
3. John Smith
4. Harry Doe
5. Jack Doe
etc......
我已经找了 2 个小时了,我拒绝相信我是第一个尝试这样做的人:-)
感谢任何帮助!
谢谢!
最佳答案
你有没有试过这样的事情
SELECT MATCH(firstname, lastname) AGAINST ('john doe') as Relevance
FROM table WHERE MATCH(firstname, lastname) AGAINST('john doe' IN
BOOLEAN MODE)
HAVING Relevance > 0.3
ORDER BY Relevance DESC
另见
http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html
这也可能是一个解决方案:
SELECT MATCH(firstname) AGAINST ('john doe') as firstname_relevance,
MATCH(lastname) AGAINST ('john doe') as lastname_relevance
FROM table WHERE MATCH(firstname, lastname) AGAINST('john doe' IN
BOOLEAN MODE)
ORDER BY firstname_relevance+lastname_relevance DESC
关于PHP/MySQL 多关键字复杂搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849489/