2015-10-09 104 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