2016-12-29 115 views
0

的任何部分匹配我有一個使用檢查字符串1的任何部分字符串2

WHERE data LIKE '%keyWord%'; 

,但如果我用很多關鍵詞

「多關鍵詞」

什麼簡單的搜索功能我的數據包含

「的一些關鍵數據」

我想他們甚至投其所好如果一個單詞匹配(在這種情況下「鑰匙」)。 這可以在一個MySQL查詢中實現嗎?

+0

使用'或'運營商或爆炸*(或者是說破滅?我弄混)*上的數據檢索 –

+0

問題是因爲關鍵字,即使它包含了許多我不能用很多的OR單詞必須是單個字符串。 – Vortic

+0

https://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html – shmosel

回答

0

好吧,我就是這樣處理它的。

  $keyWords = $_POST["searchedWords"]; 
      $exploded = explode(" ",$keyWords); 
      $allTags = ''; 
      foreach ($exploded as $tag) { 
       $allTags .= " or data like '%".$tag."%'"; 
      } 

      $query = "select something, something2 from myTable 
      where data = 'ReallyHardTagThatNoOneWillGuess'$allTags"; 

這給出了一個查詢準備搜索表中的字符串中的每個單詞,而不僅僅是整個字符串。

+0

只是稍作修改。它應該是$ allTags。=「或數據如'%'。$ tag。」%'「; – Vortic

0

除非您的表格包含幾行應該避免使用「%text%」,因爲不能使用索引。

相反,您應該考慮在列數據上添加全文索引並執行全文搜索,例如,

ALTER TABLE mytable ADD FULLTEXT(data); 
SELECT col1, col2, ... FROM mytable WHERE match(data) AGAINST("word1 word2 word3" in BOOLEAN MODE);