【问题标题】:MySQL: Search on Fulltext index using MATCH and INSTRMySQL:使用 MATCH 和 INSTR 搜索全文索引
【发布时间】:2014-02-06 13:21:54
【问题描述】:

在包含单词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


    【解决方案1】:

    MySQL 的全文搜索功能有一个最小字长。您的机会设置为大于三的值。您可以像这样在 my.cnf 文件中配置它:

    [mysqld]
    ft_min_word_len=3
    

    如需了解更多信息,请查看MySQL manual

    【讨论】:

    • 已将ft_min_word_len=3 添加到 my.cnf 并重新启动 MySQL,但仍获得 0 条全文搜索记录!
    • 如果你运行“SHOW VARIABLES LIKE 'ft_%'”,结果是什么?
    • 是的,看过这个:ft_boolean_syntax + -><()~*:""&|ft_max_word_len 84ft_min_word_len 3ft_query_expansion_limit 20ft_stopword_file (built-in)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    相关资源
    最近更新 更多