MySQL全文搜索不匹配

时间:2011-12-11 00:53:55

标签: mysql full-text-search full-text-indexing

我的MySQL表没有返回带有MATCH (col) AGAINST ('')查询的结果。

表格很简单:

id | url | fullTextIndex

我的查询是

SELECT *, Match(fullTextIndex) AGAINST ("7f7f7f807f8080807f8080807f7f7f807c828888808a86967e8b858d7f89838a76829e958f7badb68084a3a38384899077848b877f799f9c85799fa2827d8c8a ") FROM Pictures;

最后一列(匹配)始终为0.除此之外,我知道上面的字符串是逐字包含在其中一个值中的事实。

注意事项:

  • 该字符串仅在该行中(因此它不超过50%的行,因此不应忽略它。)
  • 这不是完整值
  • 该列是bigText列
  • 当我使用INSTR时,我得到值1(这是正确的)

为什么这个查询可能不起作用的任何想法?

1 个答案:

答案 0 :(得分:4)

对于用于索引的单词的长度似乎存在(可配置的)上限:

http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_max_word_len

您可以使用SHOW VARIABLES LIKE "ft_max_word_len";

检查当前值

它在我的服务器上返回84,你的字符串是128个字符长。

建议修复:

  1. 将此行添加到my.cnf文件中:ft_max_word_len=128(或您需要的最大长度)

  2. 按照MySQL网站上的建议重建索引:REPAIR TABLE tbl_name QUICK;