在我们的数据库中,我们有一个topics
包含title
列的表。此列通常包含 2 或 3 个单词的值,例如:“宠物”、“爱”、“电影”、“流行音乐”……
现在,我必须对该字段执行搜索,该字段应返回给定字符的最佳匹配。
我已经尝试过BOOLEAN MODE
,但除非我提供的术语与列中的值WITH QUERY EXPANSION
至少匹配一个单词,否则这些都不会返回任何东西。
Mysql 是否提供基于字符的搜索功能?
在我们的数据库中,我们有一个topics
包含title
列的表。此列通常包含 2 或 3 个单词的值,例如:“宠物”、“爱”、“电影”、“流行音乐”……
现在,我必须对该字段执行搜索,该字段应返回给定字符的最佳匹配。
我已经尝试过BOOLEAN MODE
,但除非我提供的术语与列中的值WITH QUERY EXPANSION
至少匹配一个单词,否则这些都不会返回任何东西。
Mysql 是否提供基于字符的搜索功能?
MySQL全文搜索有各种配置设置,可以更改以解决此问题:
1) ft_min_word_len :这表示mysql在准备全文索引时应该考虑的最小字长。它的默认值为3。所以默认情况下mysql不能搜索长度小于3的任何单词。如果你有这种情况,你可以在/etc/my.cnf(linux环境)中修改这个标志。
2) 停止世界列表:MySQL 在构建停止世界列表以进行完整测试搜索 [ http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html]。MySQL 全文搜索从不在全文索引中包含任何停止世界。您需要通过在 /etc/my.cnf (linux 环境)中将停止世界列表设置为新列表来覆盖它
ft_stopword_file="/new_stop_word.txt" 请确保 mysql 用户有权访问此文件。
一旦你做出改变,重启mysql服务并快速修复具有全文索引的表。