2010-09-01 52 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