2011-12-12 58 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

增加了一些運營商體重類似的結果:

  • 需要某些關鍵字(+必須在結果)
  • 排除關鍵字( - 不能在結果)
  • 負值(〜可能導致結果,但會降低結果)
  • 支持一個字而不是另一個(<和>)
  • 分組(括號)
  • 通配符(*)
  • 文字字符串( 「援引字符串」 完全匹配這一點,而不是每個單獨的字)