在InnoDB中查找具有相似关键词的项目?

时间:2013-09-16 13:19:11

标签: mysql sql innodb similarity

现在我有以下构造来查找具有相似关键字的项目:

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镜像表的情况下实现相同效果?

1 个答案:

答案 0 :(得分:0)

首先,不要每次都创建表。您可以创建一次并使用触发器插入/更新/删除记录,或者定期(例如每小时)截断并插入记录(如果您不想使用触发器)。

或者,您可以从MySQL卸载此任务并使用Lucene / Solr或Sphinx。