匹配查询问题

时间:2014-03-26 13:56:45

标签: mysql sql match-against

当我试图找到一条记录时,我遇到了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中,但我通过My​​ISAM对其进行了更改。当我有InooDB这种查询工作但引擎更改不起作用

1 个答案:

答案 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”,但它是。)

按照说明操作:更改默认值并重建索引。