我有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
答案 0 :(得分:0)
问题是默认情况下非常短的单词没有编入索引。 Here是文档:
要索引的单词的最小和最大长度由。定义 ft_min_word_len和ft_max_word_len系统变量。 (见章节 5.1.4,“服务器系统变量”。)默认最小值为四个字符;默认最大值取决于版本。如果你改变了 要么是值,你必须重建你的FULLTEXT索引。例如,如果 你想要搜索三个字符的单词,你可以设置 通过在选项中添加以下行来ft_min_word_len变量 文件:
[mysqld]
ft_min_word_len=3
这适用于布尔搜索以及自然语言。您需要更改选项以重建索引。
或者,您可以为regexp
添加firstname
表达式:
OR firstname REGEXP('(\\*)')