全文检索框架的介绍与对比
主流框架介绍
Lucene:基于Java的开源全文检索引擎工具包,适用于需要自研搜索框架。
ElasticSearch:基于Lucene,开源的高扩展的分布式全文检索引擎。它可以近乎实时(延迟1秒)的存储、检索并处理PB级别的数据。仅支持json(可通过插件支持其他格式),适合实时查询,用于索引更新频繁,需求实时查询的系统。
Solr:基于Lucene,独立的企业级搜索应用服务,支持pdf、word、txt等格式,索引插入时查询效率会降低,不适合近实时查询。
Xapian:基于C++,和Lucene一样,Xapian只是一个搜索引擎工具库,用户可以在其上自己扩展其适合的应用。
Sphinx:基于C++,与MySQL紧密结合,增量索引支持麻烦, sphinx本身不支持中文分词,配置简单,功能单一。
ElasticSearch和Solr对比
对比项目 | ElasticSearch | Solr |
---|---|---|
支持文档类型 | 仅Json,通过插件(Ingest-Attachment)支持Word等格式 | Json,Word等 |
文本操作 | 使用上述插件,对主流格式文件的文本抽取及自动导入 | 通过内置功能导入文档 |
中文分词 | 支持 | 支持 |
查询速度 | 实时索引时速度比solr快 | 对已有数据检索较快,实时索引会阻塞导致查询速度变慢 |
分布式 | 自带分布式管理,扩展性好 | 支持,需要zookeeper管理,扩展性好 |
流行度 | 高,资料丰富 | 低于ElasticSearch |