Mysql 全文搜索不适用于特殊字符

标签 mysql url full-text-search match

问题:我使用的是最新版本的 MYSQL 和 PHP。我们在 MYSQL FULLTEXT 搜索中面临这个问题。它不适用于特殊字符。

示例:在域表中,'name' 字段具有以下三个值:

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

最佳答案

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

A phrase that is enclosed within double quote (“"”) characters matches only rows that contain the phrase literally, as it was typed.

例如:

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 fiddle :http://sqlfiddle.com/#!9/a6458/6

关于Mysql 全文搜索不适用于特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33036298/

相关文章:

mysql - 反转表列中的 CSV 字符串

mysql - 检索订阅者的号码

c# - 使用c#从mysql返回两个值

url - 如何使用 JasperSoft Studio 创建超链接作为静态文本的一部分?

php - 使用全文即时搜索而不是 LIKE php mysql

mysql - 如何将 MySQL 地理空间扩展与球形几何一起使用

url - REST:发布与发布以及新建与创建

python - 属性错误 : module 'request' has no attribute 'urlopen'

php - 这是从 PHP 使用 Sphinx 的正确方法吗?

apache - 按相关性分数的 SOLR 搜索过滤器