2013-09-16 28 views
1

現在我有下面的結構,以找到類似的關鍵字項目:在InnoDB中查找含有類似關鍵字的項目?

CREATE TEMPORARY TABLE tmp (FULLTEXT INDEX (keywords)) ENGINE=MyISAM 
    SELECT object_id, keywords FROM object_search_de; 

SELECT object_id 
    FROM tmp 
    WHERE MATCH (keywords) AGAINST ('foo,bar') > 1.045; 

DROP TEMPORARY TABLE tmp; 

因此,根據整體記錄的數量和關鍵字字段的平均大小,這可以得到很慢(60秒以上執行時間處理時間)。我的目標是在1秒內完成這項任務。

除了在TEXT字段中分隔的關鍵字逗號之外,我還有一個原子關鍵字表(意思是兩列keywordobject_id,直接將一個關鍵字與一個項關聯)。

是否有任何替代方案或順利解決方案來實現相同的效果,而不訴諸於MyISAM鏡像表?

+0

爲什麼不在'object_search_de'上有全文索引? –

+0

@GordonLinoff因爲它是'InnoDB'表,'InnoDB'不支持全文。 –

+0

我剛剛發現http://stackoverflow.com/questions/1381186/fulltext-search-with-innodb?rq=1,現在我意識到'InnoDB'支持5.6版本的全文。但是,我不確定更新MySQL環境是否會破壞針對早期版本的MySQL構建的其他內容。 –

回答

0

首先,不要每次都創建表格。如果您不想使用觸發器,可以創建一次並使用觸發器插入/更新/刪除記錄或定期(例如,每小時)截斷並插入記錄。

或者,您可以從MySQL卸載此任務並使用Lucene/Solr或Sphinx。

相關問題