mysql 全文搜索不工作,即使条目存在并且 ft_min_word_len 设置为 1
mysql fulltext search not working, even though entry exists and ft_min_word_len is set to 1
我有一个 mysql table 并且需要对其执行全文搜索。但是,即使所需数据在 table 中,全文搜索也不会检索到它。
这里是查询:
SELECT * from declensions_english where match(finite) against("did" IN BOOLEAN MODE)
搜索到的数据是这样的:
I did
当然这是在有限的专栏中。在这旁边的 table 中有大约一百万行,所以通配符非常慢。
为什么这不起作用?这不是因为单词 (did) 的长度,因为我已经将 ft_min_word_len 设置为 1。还有其他情况下三个字母的单词会提供预期的结果(即检索到数据)。但也有连四个字母的词都找不到的情况。我不知道发生了什么,但我从昨天开始才使用全文搜索,所以请认为我是新手。
由于您使用 ft_min_word_len
,我必须假定您的 table 使用 myisam table 引擎。
单词did
在myisam stop word list上,这就是为什么搜索不到return的原因。
您可以 disable or change 停用词列表或迁移到 innodb,它的默认停用词列表中没有这个词。
老实说,我想不出有什么理由在 2019 年使用 myisam。你真的应该迁移到 innodb。
我有一个 mysql table 并且需要对其执行全文搜索。但是,即使所需数据在 table 中,全文搜索也不会检索到它。
这里是查询:
SELECT * from declensions_english where match(finite) against("did" IN BOOLEAN MODE)
搜索到的数据是这样的:
I did
当然这是在有限的专栏中。在这旁边的 table 中有大约一百万行,所以通配符非常慢。
为什么这不起作用?这不是因为单词 (did) 的长度,因为我已经将 ft_min_word_len 设置为 1。还有其他情况下三个字母的单词会提供预期的结果(即检索到数据)。但也有连四个字母的词都找不到的情况。我不知道发生了什么,但我从昨天开始才使用全文搜索,所以请认为我是新手。
由于您使用 ft_min_word_len
,我必须假定您的 table 使用 myisam table 引擎。
单词did
在myisam stop word list上,这就是为什么搜索不到return的原因。
您可以 disable or change 停用词列表或迁移到 innodb,它的默认停用词列表中没有这个词。
老实说,我想不出有什么理由在 2019 年使用 myisam。你真的应该迁移到 innodb。