簡體   English   中英

MySQL對多個關鍵字進行全文搜索

[英]MySQL Full text search on multiple keywords one-many

我正在嘗試使用MySQL的FTS來搜索索引內容以查找某些關鍵字。 對於我要制作的內容,它需要文本中的一個或多個關鍵字,並且關鍵字必須與單詞完全匹配。 但是,關鍵字是否在另一個單詞的中間並不重要,例如,在搜索“ STACK”時,它應該匹配:

  1. 嗨,我堆滿了
  2. 疊放在牆上
  3. 這些書架完全堆放了

我之前使用以下方法:

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

這將返回包含任何關鍵字的任何文本。 但是,這開始使幾乎所有內容變慢,因為大多數索引內容很大(存儲在blob中),並且我有500多個行可供索引。 由於Like不使用此方法使用任何索引,因此我嘗試使用以下方法轉換為FTS:

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

這對於單個關鍵字效果很好,但是當輸入多個關鍵字時,這會失敗,因為帶有+操作數NEEDS的FTS會找到與給定單詞的匹配項。 但是,如果沒有這些關鍵字,FTS將匹配模糊結果,而不是精確結果。 我最終錯過了最明確包含關鍵字的內容。

如何使用所有包含一個或多個axact關鍵字的內容?

嘗試這樣的事情:

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

聽起來您正在尋找類似以下內容的東西:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM