在我们的数据库中,我们有一个表topics
,其中包含title
列。此列通常包含带有2或3个单词的值,例如:' pet',' love',' film',' pop music'。 ..
现在,我必须针对此字段执行搜索,该字段应返回给定字符的最佳匹配。
我已尝试BOOLEAN MODE
和WITH QUERY EXPANSION
,但除非我提供的字词与列中的值匹配至少一个字,否则这些内容都不会返回任何内容。
Mysql是否提供了搜索字符库的功能?
答案 0 :(得分:4)
MySQL全文搜索有各种配置设置,可以更改这些设置来解决此问题:
1)ft_min_word_len: 这表示mysql在准备全文索引时应考虑的最小字长。它的默认值是3.所以默认情况下mysql不能搜索长度小于3的任何单词。如果你有任何这种情况,你可以在/etc/my.cnf(linux environment)中修改这个标志。
2)停止世界名单: MySQL已经在构建停止世界列表中进行完整的测试搜索[http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html]。 MySQL全文搜索从不包括全文索引中的任何停止世界。您需要通过在/etc/my.cnf(linux环境)中将stop world list设置为新列表来覆盖它
ft_stopword_file =" /new_stop_word.txt" 请确保,mysql用户可以访问此文件。
进行更改后,重新启动mysql服务并快速修复具有全文索引的表。