1

我有一个 mysql 表,需要对其执行全文搜索。但是,即使需要的数据在表中,全文搜索也不会检索到它。

这是查询:

SELECT * from declensions_english where match(finite) against("did" IN     BOOLEAN MODE)

搜索后的数据如下所示:

I did

当然,这是在称为有限的列中。在这个旁边的表中有大约一百万行,所以通配符非常慢。

为什么这不起作用?这不是因为单词 (did) 的长度,因为我已经将 ft_min_word_len 设置为 1。还有其他三个字母单词的情况可以提供预期的结果(即检索数据)。但也有连四个字母的单词都找不到的情况。我不知道发生了什么,但我从昨天开始只使用全文搜索,所以在这里考虑我是新手。

4

1 回答 1

2

由于您使用ft_min_word_len,我必须假设您的表使用 myisam 表引擎。

该词didmyisam 停用词列表中,这就是搜索不返回它的原因。

您可以禁用更改停用词列表或迁移到 innodb,它的默认停用词列表中没有此词。

老实说,我想不出任何理由在 2019 年使用 myisam。你真的应该迁移到 innodb。

于 2019-04-28T22:13:30.393 回答