我有一个mysql表,需要对它进行全文搜索。但是,即使所需数据位于表中,全文搜索也不会检索它。
下面是查询:
SELECT * from declensions_english where match(finite) against("did" IN BOOLEAN MODE)
搜索的数据如下所示:
I did
当然,这是在称为有限列中的。此表旁边的表中大约有一百万行,因此通配符非常慢。
为什么这不起作用?这不是因为单词(did(的长度,因为我已经将ft_min_word_len设置为1。还有其他情况下,三个字母的单词可以提供预期的结果(即检索数据(。但也有一些情况,甚至找不到四个字母的单词。我不知道发生了什么,但我从昨天开始只使用全文搜索,所以在这里把我当作新手。
既然你用ft_min_word_len
,我必须假设你的表使用myisam表引擎。
单词did
在myisam停用词列表中,这就是搜索不返回它的原因。
您可以禁用或更改停用词列表,也可以迁移到 innodb,其默认停用词列表中没有此词。
老实说,我想不出任何理由在2019年使用myisam。你真的应该迁移到innodb。