2014-10-01 77 views
1

我正在嘗試使用MySQL的FTS來搜索索引內容以查找某些關鍵字。對於我想要做的,它需要文本中的一個或多個關鍵字,並且關鍵字必須是精確的單詞匹配。但是,如果關鍵字是另一個字的中間,例如它沒有關係,因爲「堆棧」進行搜索時,它應該符合:MySQL在多個關鍵字上進行全文搜索一對多

  1. 嗨,我有溢出的堆棧
  2. 疊放靠牆
  3. 這些書櫃被overstacked完全

我使用以下方法之前:

SELECT ... FROM ... WHERE text LIKE '%keyword1%' OR LIKE '%keyword2%' OR LIKE '%keyword3%'

這將返回任何包含任何關鍵字的文本。但是,這開始減慢了幾乎所有的東西,因爲大多數索引內容都很大(存儲在blob中),並且我有超過500行需要索引。像沒有使用任何索引用這種方法,我嘗試使用轉換爲FTS以下幾點:

SELECT ... FROM ... WHERE MATCH(text) AGAINST ('+keyword1 +keyword2 +keyword3' IN BOOLEAN MODE)

這個工作好單的關鍵字,但輸入多個關鍵字時,失敗的原因是FTS與+操作數需要找到與給定單詞匹配。但沒有這些關鍵字,FTS匹配模糊結果,而不是確切的結果。我最終會錯過最關鍵的內容。

我可以使用什麼來獲取包含一個或多個axact關鍵字的所有內容?

回答

1

嘗試這樣的事:

SELECT * FROM table MATCH (text) AGAINST ('+"keyword1" +"keyword2"' IN BOOLEAN MODE) 
+0

此作品一樣沒有「」,它只是發現的文字與所有關鍵字,而不是關鍵字的任何一個。 – 2014-10-01 09:20:09