一尘不染

使用InnoDB进行全文搜索

mysql

我正在开发一个高容量的Web应用程序,其中的一部分是讨论帖子的MySQL数据库,该数据库需要平稳地增长到2000万+行。

我本来打算对表使用MyISAM(用于内置的全文本搜索功能),但是由于单个写入操作而使 整个表
被锁定的想法使我陷入困境。行级锁具有更大的意义(更不用说InnoDB在处理大型表时的其他速度优势)。因此,基于这个原因,我决心使用InnoDB。

问题是… InnoDB没有内置的全文本搜索功能。

我应该使用第三方搜索系统吗?像Lucene(c ++) /
Sphinx吗?你们中的任何数据库忍者有任何建议/指导吗? LinkedIn的
zoie
(基于Lucene)看起来是目前的最佳选择
…是围绕实时功能构建的(这对于我的应用程序来说非常关键。)我有点犹豫,但没有任何见识…

(仅供参考:将在具有高内存绑定的EC2上使用PHP服务前端)


阅读 234

收藏
2020-05-17

共1个答案

一尘不染

我可以保证MyISAM全文是一个不好的选择-甚至不考虑MyISAM表的各种问题,我已经看到了全文问题,并开始破坏自身并定期使MySQL崩溃。

专用搜索引擎肯定是这里最灵活的选择-将帖子数据存储在MySQL /
innodb中,然后将文本导出到搜索引擎。您可以很容易地设置定期的全索引构建/发布,如果需要并想花时间,可以添加实时索引更新。

Lucene和Sphinx和Xapian都是不错的选择,它既美观又轻巧。如果您走Lucene路线,即使您不想与Java搏斗,也不要以为Clucene会更好,尽管我没有资格讨论两者的优缺点。

2020-05-17