mysql - 改进 Mysql 匹配搜索

标签 mysql

我一直在研究 Mysql 的 Match Against 搜索。结果很奇怪。例如,如果我有一个包含条目“education”的表属性,然后搜索(使用匹配)“edu”,它就会找到它。但是,如果我搜索“educ”,则不会返回任何结果。一直到“educatio”不返回结果。所以它只匹配整个单词,或者匹配一个单词中 3 个或更少的字母。

有没有办法改进它,以便在搜索词是属性中某个词的子集时返回结果?例如。使用上面的示例,搜索“educat”将返回包含“Education”的行

最佳答案

通过匹配 IN BOOLEAN MODE 并使用 * 运算符,您可以完全按照自己的意愿行事。

例如:

 ... MATCH(thing) AGAINST ('+educat*' IN BOOLEAN MODE)...

+ 告诉匹配仅包含包含匹配项的 thing 的值,在本例中是所有以“educat”开头的索引值”(有关 bool 模式如何工作的详细信息,请参阅 here)。

顺便说一句,默认情况下,MySQL 中的全文搜索不会索引 3 个或更少字符的单词,因此我怀疑您与“edu”的匹配并不像您想象的那样有效。查看您的 ft_min_word_len 变量的值,看看是否属于这种情况。

关于mysql - 改进 Mysql 匹配搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13347446/

相关文章:

mysql - 如何将单独的记录合并为一个?

php - 日期未插入 mysql_query 插入

mysql - 关于Mysql附属计数

windows上的mysql服务器配置

mysql - 如何在 mysql 中创建模式以及如何将现有记录导入数据库?

mysql - 握手不活动超时 : nodejs 6. 10.0 mysql pool.queryAsync

mysql - 为Mysql数据库创建密码

mysql - mysql工作台导入错误: missing closing parenthesis

mysql - 项目传输执行但目标项目仍为空白

mysql - 加入两个有效的 sql 查询会得到错误的结果——我哪里出错了