【问题标题】:Mysql not returning result when using escaped slash using match statements使用 match 语句使用转义斜杠时,Mysql 不返回结果
【发布时间】:2013-07-30 01:22:08
【问题描述】:

我有一个记录,其中firstname 等于\。出于某种原因,它没有将记录归还给我。

SELECT 
    firstname,lastname,middlename,
    primary_emailaddress,alternate_emailaddress,personal_address_line1,
    personal_address_line2,personal_address_city,facebook_username,
    twitter_username,googleplus_username,linkedin_username,
    personal_website_url,birthday_month,notes,personal_address_zipcode,
    company_address_zipcode,home_phonenumber,company_phonenumber,
    cell_phonenumber,birthday_day,birthday_year,hash 
FROM contacts 
WHERE (
        MATCH( firstname,middlename,lastname,
            primary_emailaddress,alternate_emailaddress,personal_address_line1,
            personal_address_line2,personal_address_city,facebook_username,
            twitter_username,googleplus_username,linkedin_username,
            personal_website_url,birthday_month,notes ) AGAINST ('\\*' IN BOOLEAN MODE) 
        OR personal_address_zipcode REGEXP('(\\*)') 
        OR company_address_zipcode REGEXP('(\\*)') 
        OR home_phonenumber REGEXP('(\\*)') 
        OR company_phonenumber REGEXP('(\\*)') 
        OR cell_phonenumber REGEXP('(\\*)') 
        OR birthday_day REGEXP('(\\*)') 
        OR birthday_year REGEXP('(\\*)') 
    ) 
AND addressbook_id = 4

【问题讨论】:

    标签: php mysql match full-text-search


    【解决方案1】:

    问题在于,默认情况下,非常短的单词不会被索引。 Here 是文档:

    要索引的单词的最小和最大长度由下式定义 ft_min_word_len 和 ft_max_word_len 系统变量。 (见第 5.1.4,“服务器系统变量”。)默认最小值为四个字符;默认最大值取决于版本。如果你改变 无论是哪个值,您都必须重建 FULLTEXT 索引。例如,如果 您希望三字符词可搜索,您可以设置 ft_min_word_len 变量,将以下几行放入选项中 文件:

    [mysqld]
    ft_min_word_len=3
    

    这适用于布尔搜索以及自然语言。您将需要更改选项以重建索引。

    或者,您可以为firstname 输入regexp 表达式:

        OR firstname REGEXP('(\\*)') 
    

    【讨论】:

    • 当你说一个选项文件时,你的意思是php.ini?
    • @jkushner 。 . .不,这是 MySQL 的选项文件。你可以在这里阅读:dev.mysql.com/doc/refman/5.6/en/option-files.html
    • @jkushner 。 . .我不知道。在某种程度上,这取决于您的数据。
    • 我将 ft_min_word_len 添加到 my.cnf 中,但它似乎不起作用。
    • @jkushner 。 . .你重建索引了吗?
    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 2012-08-26
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多