公司项目须要,要将mysql数据库中的数据快速检索并分词。mysql
开始使用的是sphinx,这个搜索引擎安装,配置,使用,都比较简单,无需安装其余插件,相对来讲功能比较单一。sql
对于新增记录,个人处理方法是添加增量索引,按期合并到主索引,这致使索引体积愈来愈大。因为sphinx在运行时是将这些索引放在内存里的,若是索引体积超出内存容量,会致使报错没法执行,因此若是想用sphinx作搜索引擎的话,请务必作好事先规划。数据库
sphinx的分词器用的是coreseek,做者前段时间网站停了几个月,万幸如今又可使用了,感谢他们的无私奉献。安全
sphinx的资料国内较少,这算是一个遗憾。elasticsearch
以后通过讨论,决定将搜索引擎改成elasticsearch,简称ES。分布式
ES的安装配置就很麻烦了,并且它最常常使用的地方是和logstash、kibana一块儿组成ELK,处理日志,想将mysql中的数据导入,须要借助其余工具。工具
我我的使用的是logstash的组件input,这种方法对于数据库的删除操做,很难处理。比较看好国人的一个项目,根据mysqldump动态更新,等我有空用过以后,再行评论。性能
ES比较赞的是分布式功能,分片自动调整,这个正确设置的话,很好用。网站
缺陷的话ES的安全方面不是很好,虽然5.0版本后有x-pack支持,但也使安装配置麻烦了不少。搜索引擎
分词用的是ik,我比较习惯粗粒度,细粒度致使索引体积过大了。
总结一下:sphinx安装配置简单,功能单一,但性能不差,我的比较推荐做为mysql的插件来安装使用(还未有时间尝试)。ES呢,安装配置复杂了不少,功能比较强大,分布式能够进行不少细微调整,就是安全性和传统数据库导入不是很容易,不出意外的话,我最后用的就是ES了。