MySQL搜索特定单词的文本列

时间:2011-08-16 23:44:39

标签: mysql indexing full-text-search

我想做的是在我的表格中搜索一个特殊词:

SELECT * FROM my_table WHERE MATCH (description) AGAINST ('test');

这将返回my_table中包含字符串'test'的所有行。

问题是这种情况并非总能发生。这意味着在我重新创建表之后它有时会起作用。

CREATE TABLE my_table 
(date date, 
time time, 
name varchar(50), 
description text, 
FULLTEXT INDEX (description)) ENGINE=MYISAM;

因为它只是偶尔发生,所以它让我相信索引必定存在一些问题。

所以我尝试将ft_min_word_len设置为1,什么也没做。 我的MySQLVersion是5.1.57-community。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

匹配和反对是一种自然语言搜索。如果你的列包含你在against()参数中传递的50%或更多,它将被认为是常见的,不会返回任何内容。只需使用SELECT * FROM my_table WHERE DESCRIPTION LIKE '%test%',其中%通配符表示在之前或之后有单词或短语或后缀/前缀。

此处阅读http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html了解详情