mysql全文!不要忽视任何事情


mysql fulltext! do not ignore anything

当前,我的数据库会忽略诸如what、all之类的词。我如何才能阻止db忽略这些类型的单词、abb等。?

如果您需要查看我的sql命令:

SELECT *, MATCH(title,body) AGAINST('*what*' IN BOOLEAN MODE) AS sort
FROM articles  WHERE MATCH(title,body) AGAINST('*what*' IN BOOLEAN MODE) ORDER BY sort DESC LIMIT 20;

what包含在停止字中。

看看MySQL 5.5的停止语

您可以更改ft_stopword_file系统变量并加载一组不同的停止字(或仅排除what),请参阅MySQL 5.5微调

在5.6中,甚至可以在每个表的基础上更改停止字(不过仅限于InnoDB)。MySQL 5.6停止字

我已经使用mysql十多年了,处理这些东西大约有3年了。我必须说,我发现MySQL的方法是不索引三个字母及以下的单词,此外,忽略一个极其随意的频繁出现的关键字列表,这是愚蠢和恶意之间的界限。

例如,MySQL假设用户永远不会搜索"course"、"Kim"或"FBI"。这太愚蠢了!

更糟糕的是,这些设置是配置文件的一部分,会被操作系统更新覆盖,在系统更新后返回此行为,并在操作系统更新和my.cnf的后续更改之间出现不一致的策略,从而污染全文索引。

没有理由将其作为默认行为。

今天我受够了这一切,所以我写了一个shell函数来编辑my.cnf并自动实现这些更改。它在每次系统更新后运行,作为我的一般夜间维护脚本的一部分。

[mysqld]
ft_stopword_file=""
ft_min_word_len=0