MySQL 布尔全文搜索


MySQL Boolean Full-Text Searches

我目前正在使用布尔全文搜索我的网站。但是,此方法将忽略少于 2 个字符的单词。

例:

标题: iPhone 4 最后销售

$raw_results = mysqli_query($conn,"SELECT * FROM memberpost WHERE MATCH(title) AGAINST('4' IN BOOLEAN MODE )") or die("no result found");

如果我在搜索框中输入:"4",它不会返回任何结果。

即使有 1 个字符,我怎样才能让它工作?

谢谢

通过添加到 my.ini 文件中的 [mysqld] 来解决,重新启动 mysql 服务。

innodb_ft_min_token_size = 1
innodb_ft_enable_stopword = OFF
ft_min_word_len = 1
ft_stopword_file = ''

然后运行此查询来修复表:

ALTER TABLE table_name FORCE;

控制它的变量是 ft_min_word_len ,记录在这里。 您可以将其设置为 1,并且可能还会覆盖停用词列表。

请注意三件事。 重置索引后,需要重新生成索引。 其次,如果您已经处理了两个字符的单词,则此值已从默认值更改。 第三,还有一个停用词列表,它也从索引中过滤出术语。