2015-10-09 43 views
5

問題:我正在使用MYSQL和PHP最新版本。我們在MYSQL FULLTEXT搜索中遇到了這個問題。它不適用於特殊字符。Mysql全文搜索無法使用特殊字符

例如:在域表中,「姓名」字段有以下三個值:

1. https://www.google.com 
2. https://www.yahoo.com 
3. https://www.trafe.com 

如果我使用的搜索詞https://www.google.com,它會顯示所有上述三個值的結果,但正確答案是https://www.google.com.

查詢:

SELECT name 
FROM domains 
WHERE MATCH (name) AGAINST ('https://www.google.com*' IN BOOLEAN MODE); 

實際結果:https://www.google.com

回答

1

使用雙引號:https://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html

是雙引號括起來的短語(「「」)字符匹配 只是字面上包含該短語的行,因爲它是類型化。

例如:

SELECT name 
FROM domains 
WHERE MATCH (name) AGAINST ('"https://www.google.com"' IN BOOLEAN MODE); 

結果:

name 
https://www.google.com 

如果你真的想要一個*您可以搜索'"https://www.google.com*"'*放在雙引號內)。

這裏是SQL小提琴:http://sqlfiddle.com/#!9/a6458/6

+0

謝謝。它的工作就像一個魅力。 但是,如果字段值爲'2 - 9'和'+91 8525896584',那麼這些值不會被搜索到。 – raj

+0

@raj,我不明白你的問題'2 - 9'和'+91 8525896584'。創建新問題,給出正確的描述和示例。 –

+0

嗨@ grzegorz-adam-kowalski,我已經解釋了在單獨的問題http://stackoverflow.com/questions/33096544/mysql-fulltext-search-does-not-work-with-hypen-and-plus。請檢查並提供建議。 – raj