【问题标题】:Mysql fulltext search not working with special charactersMysql全文搜索不适用于特殊字符
【发布时间】:2016-01-07 06:52:08
【问题描述】:

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

示例:在域表中,“名称”字段具有以下三个值:

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

【问题讨论】:

    标签: mysql url full-text-search match


    【解决方案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

    【讨论】:

    • 谢谢。它的工作就像一个魅力。但如果字段值如“2 - 9”和“+91 8525896584”,则不会搜索这些值。
    • @raj,我不明白你对“2 - 9”和“+91 8525896584”的问题。创建新问题,给出适当的描述和示例。
    • 嗨@grzegorz-adam-kowalski,我已经在单独的问题stackoverflow.com/questions/33096544/… 中进行了解释。请检查并提出建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    相关资源
    最近更新 更多