我正在尝试使用全文索引以便于搜索论坛帖子。它没有按照我期望的方式工作,我正在尝试理解为什么不。
例如,我知道有一篇帖子包含短语“哈哈,我得到了三个”
,因此我执行查询
select * from forum_posts where
match(message) against ('"haha and i got three"' in boolean mode);
正如我所料,我找到了包含这句话的单个帖子。万岁!
但随后我执行相关查询:
select * from forum_posts where
match(message) against ('"and i got three"' in boolean mode);
并没有得到任何结果。其实只要搜索“三”字即可:
select * from forum_posts where
match(message) against ('three' in boolean mode);
也没有结果。
可能发生了什么?
最佳答案
我认为你需要了解停用词和最小词长。
我的默认设置是,MySQL 会忽略全文索引中的停用词。 Here
是它们的列表。 “我得到了三个”都是停用词。
另外,默认情况下,MySQL会忽略带有小于字符的单词。这是由参数控制的。这有更详细的解释here .
听起来您想要更改停用词列表并更改最小单词长度并重建索引。
关于mysql - mysql FULLTEXT bool 模式搜索缺少结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564259/