目前,我的数据库忽略了诸如what之类的单词。如何阻止db忽略这些单词,abbs等?
如果你需要查看我的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;
答案 0 :(得分:1)
what
包含在停用词中。
您可以更改ft_stopword_file
系统变量并加载一组不同的停用词(或只是排除what
),请参阅MySQL 5.5 finetuning
甚至可以在每个表的基础上更改停用词(仅限InnoDB)。 MySQL 5.6 stopwords
答案 1 :(得分:1)
我已经使用mysql超过十年了,并处理了这个东西大约3年。我必须说,我发现MySQL的方法是不对三个字母及以下单词进行索引,另外,忽略一个极其随意的频繁出现的关键字列表,恰好处于愚蠢和恶意之间的边界。
例如,MySQL假定用户永远不会搜索“course”或“Kim”或“FBI”。这就像它可能得到的一样愚蠢!
更糟糕的是,这些设置是配置文件的一部分,被操作系统更新覆盖,在系统更新后返回此行为,并污染全文索引,并显示操作系统更新与后续更改之间可能出现的不一致策略的结果到my.cnf。
没有理由将此作为默认行为。
今天我厌倦了这一切,我编写了一个shell函数来编辑my.cnf并自动生成这些更改。它作为我的一般夜间维护脚本的一部分,在每次系统更新后运行。
[mysqld]
ft_stopword_file=""
ft_min_word_len=0