当我试图找到一条记录时,我遇到了MATCH AGAINST的问题。在我的用户表中,我有一个用户,其中包含以下数据:
first_name:亚历杭德拉玛丽亚德洛杉矶 last_name:Quintero Barreiro Gutierrez
当我尝试进行以下查询时:
SELECT *
FROM articles
INNER JOIN users ON articles.author_id = users.id
WHERE MATCH(first_name,last_name) AGAINST('Alejanra Gutierrez')
SELECT *
FROM articles
INNER JOIN users ON articles.author_id = users.id
WHERE MATCH(first_name,last_name) AGAINST('A Barreiro')
SELECT *
FROM articles
INNER JOIN users ON articles.author_id = users.id
WHERE MATCH(first_name,last_name) AGAINST('los angeles')
所有查询都返回正确的信息,但如果搜索替换为first_name中的“de los”,则查询不起作用。
有人知道为什么或可以帮助我这个?
Pd积。这些表位于带有MySQL 5.6.15的InooDB中,但我通过MyISAM对其进行了更改。当我有InooDB这种查询工作但引擎更改不起作用
答案 0 :(得分:1)
MySQL全文搜索默认忽略短于4个字符的单词。阅读here:
要索引的单词的最小和最大长度由。定义 InnoDB的innodb_ft_min_token_size和innodb_ft_max_token_size 搜索索引,以及myISAM的ft_min_word_len和ft_max_word_len 那些。更改任何这些选项后,重建您的FULLTEXT 要使更改生效的索引。例如,要做 可搜索的双字符单词,您可以将以下行放入 选项文件
(好的,该引用未指定默认值为“4”,但它是。)
按照说明操作:更改默认值并重建索引。