2011-12-12 57 views
1

我使用的数据库中类似的查询检索此搜索:mysql用AND和OR

SELECT * , MATCH (field1, field2) AGAINST ('".$keyword."') AS score FROM table_name WHERE MATCH (field1, field2) AGAINST etc...

但是,当用户在搜索框中写入多于一个字,它给它们要么第一个单词的所有结果或第二个。

基本上,我想要做的,就是让人们搜索这样的:

(keyword1 OR keyword2) AND keyword3和类似。因此,它会找到keyword1keyword3keyword2keyword3

我该怎么做?

回答

0

假设你已经在你的餐桌全文搜索索引,你可以指示的是,比赛应该在布尔模式下运行(你应该习题仔细检查语法在mysql文档中)。

SELECT * FROM table_name WHERE MATCH('+keyword1 +keyword2 keyword3' IN BOOLEAN MODE) 

关键字与“+”号前缀是强制性的(即返回的记录必须同时包含),关键词没有“+”匹配或模式,所以上述查询等效于(关键字1 & &关键字2)| | KEYWORD3

0

您可以解析字符串并运行2个不同的查询或加入您的查询。

SELECT * FROM table_name的WHERE MATCH(关键字1 AND KEYWORD3)

SELECT * FROM table_name的WHERE MATCH(1关键字和KEYWORD3)

,或者你可以写的东西,加入了这些结果。

我真的希望这有助于...

0

http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html

增加了一些运营商体重类似的结果:

  • 需要某些关键字(+必须在结果)
  • 排除关键字( - 不能在结果)
  • 负值(〜可能导致结果,但会降低结果)
  • 支持一个字而不是另一个(<和>)
  • 分组(括号)
  • 通配符(*)
  • 文字字符串( “援引字符串” 完全匹配这一点,而不是每个单独的字)