全文检索技术选型调研

全文检索技术选型调研

简介

全文检索就是以数据为主要内容,进行关键字搜索的一种检索技术.本次提供两种技术选择Solr和ElasticSearch.

Lucene

Lucene是当今最先进,最高效的全功能开源搜索引擎框架.提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文和德文).Lucene的目的是为开发人员提供一个简易的工具包,方便在系统中实现全文检索的功能,或以此为基础建立完整的全文检索引擎.

ElasticSearch

ElasticSearch是一个实时的分布式搜索和分析引擎.它可以用于全文搜索,结构化搜索以及分析.ElasticSearch是建立在Lucene基础上的搜索引擎,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene运行原理.

特点

  • 基于Java编写,通过RESTFul接口操作数据
  • 以Json格式管理数据
  • 对中文也有很好的支持,提供的中文分词器有很多种
  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索
  • 实时分析的分布式搜索引擎
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据

缺点

  • 字段类型无法修改
  • 写入性能较低
  • 高硬件资源消耗
  • 默认1秒的写入延迟
  • 相比于Solr,维护者略少

Solr

Solr是一个基于Lucene的Java搜索引擎服务器.其主要功能包括全文检索,命中标示,分面搜索,动态聚类,数据库集成,以及富文本的处理.Solr是高度可扩展的,并提供了分布式搜索和索引复制.是最流行的企业级搜索引擎.Solr采用Java编写,运行在Servlet容器的一个独立的全文搜索服务器.采用Lucene搜索库为核心,并具有类似REST的HTTP/XML和Json的API.

特点

  • 支持添加多种格式的索引(HTML,PDF,JSON,XML等纯文本格式)
  • 拥有更大,更成熟的用户,开发和贡献者社区
  • 比较成熟,稳定
  • 不考虑建索引的同时进行搜索,速度更快

缺点

  • 建立索引时,搜索效率下降,实时索引搜索效率不高
  • 多线程下容易死锁性能降低

对比

  • 对于已存在数据进行搜索时,Solr更快
  • 实时建立索引时,Solr会产生IO阻塞,查询性能较差,ES更具优势
  • 随着数据量的增大,Solr的搜索效率会越来越低,而ES却没有太大的变化
  • Solr利用Zookeeper进行分布式管理,而ElasticSearch自身带有分布式协调管理功能
  • Solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时效率明显低于Elasticsearch

引文

Lucene维基百科
Lucene
ElasticSearch官网
ElasticSearch介绍
Solr官网
Solr维基百科
ElasticSearch和Solr的关系和区别
搜索引擎选择: ElasticSearch与Solr
大数据时代MongoDB、ES、Redis、HBase这四种数据库你应该懂

你可能感兴趣的:(知识点)