【问题标题】:mysql fulltext search not working, even though entry exists and ft_min_word_len is set to 1mysql全文搜索不起作用,即使条目存在并且ft_min_word_len设置为1
【发布时间】:2019-09-17 13:45:13
【问题描述】:

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

这里是查询:

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

搜索后的数据是这样的:

I did

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

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

【问题讨论】:

    标签: mysql full-text-search match against


    【解决方案1】:

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

    did 这个词在 myisam stop word list 上,这就是搜索不返回它的原因。

    您可以disablechange 停用词列表或迁移到默认停用词列表中没有此词的innodb。

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

    【讨论】:

    • 谢谢,直到现在我才知道有停用词列表这样的东西。我会调查的。
    • 我刚看到你的编辑,请问myisam有什么不好(老实说,我从未考虑过在两者之间明确选择,因为几个月前我刚开始时,我不知道存在不同的引擎。实际上,我只是最近几天才学会的)
    • 稍微搜索一下就能找到答案:stackoverflow.com/questions/15678406/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多