2016-07-11 48 views
0

在MySQL中是否會允許搜索句子而不用考慮單詞的順序,例如:搜索Europe league匹配league Europe,與句子相同包含3個單詞...等MySQL:搜索一個句子並忽略單詞的順序

我知道我可以在編程語言進行處理並生成MySQL查詢像這樣:

select p.title 
from post p 
where p.title = 'Europe league' or p.title = 'league Europe' 
order by case 
    when text = 'Europe league' then 1 
    when text = 'league Europe' then 2 
end 
limit 10; 

但有MySQL中的自我句柄這個問題? thx

回答

4

您正在尋找全文搜索。閱讀上the docs,這樣你就可以使用以下類型的查詢:

SELECT p.title 
FROM post p 
WHERE MATCH (p.title) AGAINST ("+europe +league" IN BOOLEAN MODE) 
LIMIT 10 
+0

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,在'IN BOOLEAN MODE'附近使用正確的語法@Jethro – mwafi

+0

對不起,修正了錯字。在BOOLEAN MODE之前刪除逗號。 – 1sloc

+0

看來它需要MyISAM提供全文索引支持:(找不到與列列表匹配的FULLTEXT索引) – mwafi

-1

顯然迭代次數會讓人望而卻步當您添加更多的話;對此的一個解決方案是使用instr函數(http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_instr)。這樣,您可以按照以下方式進行操作:

select p.title 
from post p 
where instr('Europe',p.title)>0 
AND instr('League ',p.title)>0 
AND instr('Match',p.title)>0 
limit 10; 
+0

這不是一個可擴展的解決方案,是嗎? – 1sloc