MySQL:使用MATCH和INSTR搜索全文索引
在包含wordMySQL:使用MATCH和INSTR搜索全文索引,mysql,Mysql,在包含wordddi的全文索引字段中。现在我使用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
的全文索引字段中。现在我使用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
使用全文索引MySQL中的全文搜索功能有一个最小字长。如果设置的值大于3,则很可能是您的。您可以在my.cnf文件中进行如下配置:
[mysqld]
ft_min_word_len=3
有关更多信息,请查看。在my.cnf中添加了
ft\u min\u word\u len=3
,并重新启动了MySQL,但仍获得0条全文搜索记录!如果您运行“SHOW VARIABLES LIKE'ft_u%'”,结果是什么?是的,请参见:ft_boolean_syntax+->