2010-09-01 91 views
3

试图尽我所能,我终于创造了这个测试表:为什么MySQL全文索引不起作用?

CREATE TABLE test_table (
    id int(11) NOT NULL AUTO_INCREMENT, 
    title text NOT NULL, 
    PRIMARY KEY (id), 
    FULLTEXT KEY title (title) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

用下面的测试数据:

INSERT INTO test_table (id, title) VALUES 
(1, 'Evolving intelligence bayesian filtering power behind'); 

我希望下面的查询返回1行:

SELECT * FROM test_table WHERE MATCH (title) AGAINST ('intelligence'); 

但它返回一个空集。

我有另一个数据库在同一个mysql实例中全文搜索按预期工作。但是对于我创建的每个新数据库,全文不起作用。我重建了索引,修复了表格,甚至用myisam_ftdump检查了索引。我没有想法。

你对这个问题有什么想法吗?先谢谢你。

+0

重复的http://stackoverflow.com/questions/3439416/fulltext-search-in-mysql-does-not-return-any-rows – 2010-09-01 07:29:01

回答

10

只是为了澄清。如果您的表格不包含足够的数据(例如1行),则全文搜索将无法工作。对于被编入索引的词,它们需要看起来不如50%的行中常见。

所以'智能'出现在100%的行中,因此没有编入索引。

不添加单词智能添加至少2行,它将开始工作。这在mySQL文档中没有明确说明,经常会吸引新手出来。这也是(我也是)因为我们都用小数据集进行测试。

DC