Php Mysql在使用转义斜杠和匹配语句时不返回结果
我有一个记录,Php Mysql在使用转义斜杠和匹配语句时不返回结果,php,mysql,match,full-text-search,Php,Mysql,Match,Full Text Search,我有一个记录,firstname等于\。出于某种原因,它没有把唱片还给我 SELECT firstname,lastname,middlename, primary_emailaddress,alternate_emailaddress,personal_address_line1, personal_address_line2,personal_address_city,facebook_username, twitter_username,googleplu
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
问题是,默认情况下,很短的单词没有索引。文件是否: 要编制索引的单词的最小和最大长度由 ft_min_word_len和ft_max_word_len系统变量。(见第节) 5.1.4“服务器系统变量”。)默认最小值为四个字符;默认最大值取决于版本。如果你改变 无论是哪个值,都必须重建全文索引。例如,如果 如果要搜索三个字符的单词,可以设置 通过在选项中输入以下行,可以使用ft_min_word_len变量 文件: 这适用于布尔搜索和自然语言。您需要更改选项以重新生成索引 或者,您可以为
firstname
输入regexp
表达式:
OR firstname REGEXP('(\\*)')
你说的选项文件是指php.ini?@jkushner。不,这是MySQL的选项文件。你可以在这里读到:。@jkushner。我不知道。在某种程度上,这取决于你的数据。我在my.cnf中添加了ft_min_word_len,但它似乎不起作用。@jkushner。你重建索引了吗?
OR firstname REGEXP('(\\*)')