Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在InnoDB中查找具有类似关键字的项目?_Mysql_Sql_Innodb_Similarity - Fatal编程技术网

Mysql 在InnoDB中查找具有类似关键字的项目?

Mysql 在InnoDB中查找具有类似关键字的项目?,mysql,sql,innodb,similarity,Mysql,Sql,Innodb,Similarity,现在,我使用以下构造来查找具有类似关键字的项目: 创建临时表tmp全文索引关键字ENGINE=MyISAM 从对象搜索中选择对象id、关键字; 选择对象id 来自tmp 其中,将关键字与'foo,bar'>1.045匹配; 丢弃临时表tmp; 因此,根据总体记录的数量和关键字字段的平均大小,这可能会在60秒的执行时间内变得非常缓慢。我的目标是在1秒内完成这项任务 除了在文本字段中用逗号分隔的关键字外,我还有一个原子keyord表,表示两列关键字和object_id,直接将一个关键字与一个项关联

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

创建临时表tmp全文索引关键字ENGINE=MyISAM 从对象搜索中选择对象id、关键字; 选择对象id 来自tmp 其中,将关键字与'foo,bar'>1.045匹配; 丢弃临时表tmp; 因此,根据总体记录的数量和关键字字段的平均大小,这可能会在60秒的执行时间内变得非常缓慢。我的目标是在1秒内完成这项任务

除了在文本字段中用逗号分隔的关键字外,我还有一个原子keyord表,表示两列关键字和object_id,直接将一个关键字与一个项关联


是否有其他方法或平滑的解决方案可以在不使用MyISAM镜像表的情况下实现相同的效果?

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


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

为什么不在object_search_de?@GordonLinoff上设置全文索引,因为它是一个InnoDB表,InnoDB不支持全文。我刚刚发现并且现在知道InnoDB从5.6版开始支持全文。但是,我不确定更新MySQL环境是否会破坏针对早期版本MySQL构建的其他功能。在较新版本的MySQL中,它是这样做的。