我用于在数据库中搜索类似的查询:
SELECT * , MATCH (field1, field2) AGAINST ('".$keyword."') AS score FROM table_name WHERE MATCH (field1, field2) AGAINST etc...
但是当用户在搜索框中写入多个单词时,它会给出所有结果,即第一个单词或第二个单词。
基本上,我想做的是让人们像这样搜索:
(keyword1 OR keyword2) AND keyword3
和类似的。因此,它会找到keyword1
和keyword3
或keyword2
和keyword3
。
我该怎么做?
答案 0 :(得分:0)
您可以解析字符串并运行2个不同的查询或加入您的查询。
SELECT * FROM table_name WHERE MATCH(keyword1 AND keyword3)
SELECT * FROM table_name WHERE MATCH(keyword2 AND keyword3)
或者你可以写一些加入这些结果的东西。
我真的希望这有帮助...
答案 1 :(得分:0)
假设你的桌面上已经有一个全文搜索索引,你可以指示匹配应该以布尔模式运行(你应该问一下。仔细检查mysql文档中的语法)。
SELECT * FROM table_name WHERE MATCH('+keyword1 +keyword2 keyword3' IN BOOLEAN MODE)
前缀为“+”符号的关键字是强制性的(即返回的记录必须包含两者),OR模式下没有“+”匹配的关键字,因此上述查询等同于(keyword1&& keyword2)|| KEYWORD3
答案 2 :(得分:0)
http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html
添加了几个运算符来加权结果,如: