2

当我试图查找记录时,我遇到了 MATCH AGAINST 的问题。在我的用户表中,我有一个具有以下数据的用户:

名字:Alejandra Maria de los Angeles 姓氏: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 时,这种查询正在工作,但引擎更改不起作用

4

1 回答 1

1

MySQL 全文搜索默认忽略少于 4 个字符的单词。在这里阅读:

要索引的单词的最小和最大长度由 InnoDB 搜索索引的 innodb_ft_min_token_size 和 innodb_ft_max_token_size 以及 MyISAM 的 ft_min_word_len 和 ft_max_word_len 定义。更改任何这些选项后,重建 FULLTEXT 索引以使更改生效。例如,要使两个字符的单词可搜索,您可以将以下行放入选项文件中

(好的,该引用没有指定默认值为“4”,但它是。)

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

于 2014-03-26T14:04:23.433 回答