「搜索」是很多产品中无法绕开的一个功能模块,smartx 的虚拟化管理平台也提供了对主机,存储等对象的查询功能。近期的研发工作中,我们引入了 redisearch 来优化查询效果。
在引入全文检索之前,我们使用 mongoDB 内置的 正则匹配搜索文本。为了提升性能(正则搜索大部分情况下无法使用索引。)和引入语义搜索功能 (如搜索虚拟机 描述文档的内容), 正则匹配的方式已经远远不够了。我们优先考虑了 mongodb 自带的 text 索引和 search 关键字,考虑到当前客户环境的mongodb 版本较低(2.6),升级会引入额外成本。同时 text索引会给客户环境带来额外的内存压力。所以我们希望能找到一种独立的全文检索方案。
业界常用 elasticsearch 和 lucene 方案都对 JVM 的运行时内存有著最低限额,笔者在选型测试时优先测试了 elasticearch ,其运行时大小推荐 2G 以上的内存空间,并且需要额外的磁碟空间做持久化存储。