我正在为一些数据创建一个小型搜索引擎,因为它具有全文搜索功能,所以需要使用MyiSAM。不幸的是,我还需要使用事务进行提交和回滚,以确保输入将被搜索的数据。
我为数据存储创建了一个InnoDb表(因为它可以执行提交和回滚),以及一个MyiSAM表,它是InnoDb表的精确副本,用于使用全文搜索。现在的问题是保持这些表同步。
我正在寻找一种有效的方法来保持MyiSAM表与InnoDb表同步。我不能使用触发器,因为在将数据提交到InnoDb表之前,我不希望任何存储在MyiSAM表中的内容。
我可以编写一些将在提交时同步表的代码,但我不确定将两个表组合在一起的快速方法。表可能很大,我不希望用户等待一小时插入一条记录。在相同的上下文中,我不希望用户无法在一天中的某个时间访问搜索引擎一小时,因为cron作业同步两个表并锁定MyiSAM表。
有一点需要提及的是,我的MySQL服务器是在Bluehost上,因此MySQL在5.1版本上被锁定,所以我不能在版本5.6中使用新的InnoDb全文搜索。当然,我无法在Bluehost上安装像sphinx这样的第三方搜索服务器。
如果有人能很好地解决我的问题,我将非常感激。
答案 0 :(得分:0)
这是一个老问题,但对于在搜索中遇到此问题的人:InnoDB表支持从MySQL 5.6.4开始的FULLTEXT索引。
答案 1 :(得分:0)
我有一个轻微的解决方法
前进