MySQL:使用 MATCH 和 INSTR 搜索全文索引

标签 mysql

在包含单词ddi的全文索引字段中。现在我正在使用 MATCH() 函数搜索该单词,如下所示,但它返回 0 条记录:

SELECT * FROM `tbl_xxx`
WHERE MATCH(`full_content`) AGAINST ('ddi' IN NATURAL LANGUAGE MODE);
-- RETURNING 0 RECORDS :(

但是当我使用 INSTR() 函数搜索时,它会返回 1 条记录

SELECT * FROM `tbl_xxx`
WHERE INSTR(`full_content`, 'ddi')
-- RETURNS 1 RECORD :)

为什么使用 INSTR() 返回 1 条记录,但不使用 MATCH()。

tbl_xxx的引擎类型= MyISAM,字段full_content使用FULLTEXT进行索引

最佳答案

MySQL 中的全文搜索功能有最小字长限制。您的值可能设置为大于三。您可以在 my.cnf 文件中配置它,如下所示:

[mysqld]
ft_min_word_len=3

有关更多信息,请查看MySQL manual .

关于MySQL:使用 MATCH 和 INSTR 搜索全文索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21604214/

相关文章:

android - 如何从 Android 连接 phpmyadmin

php - 提取不包括的跨表重复项。表重复项

phpMyAdmin "Cannot load or save configuration"

mysql - 将多个查询合并为一个

java - 错误 1126 (HY000) : Can't open shared library 'lib_mysqludf_sys.dll' (errno: 126) The specified module could not be found. )

php - 如何防止 PHP 中的 SQL 注入(inject)?

mysql - 如何使用 vitess 仅对特定表进行分片

MySQL 和预排序表

java - Select count(*) 返回一行,即使我不期望它

mysql - 2 名及以上玩家游戏的 CakePHP 数据库结构