Java服务端面试

搜索引擎技术选型

2019-01-25  本文已影响28人  dusty_giser

  近期,业主对POI检索提出了一些想法,针对之前简单的WordSegment分词和模糊匹配搜索需要进行一些更为符合业主需求的调整。于是这几天对搜索引擎进行了一些技术选型;

一、Apache Lucene

  Lucene是一个开源的高性能、可扩展的全文检索引擎工具包,但不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。所以它是一套信息检索工具包,可以说是当今最先进、最高效的全功能开源搜索引擎框架。使用起来相对复杂。
  参考: Lucene解析 - 基本概念

二、Elasticsearch

  Elasticsearch是一个实时的分布式搜索和分析引擎。可以快速处理大规模数据。可以用于全文搜索、结构化搜索和分析。

  使用:

  分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索;
  实时分析的分布式搜索引擎;
  可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

  案例:

  维基百科、英国卫报、StackOverFlow、Github、Goldman Sachs(股票分析)

  优点:

  1、 分布式,不需要其他组件,实时分发;
  2、 完全支持Apache Lucene的接近实时的搜索;
  3、 处理多租户不需要特殊配置,而Solr则需要更多的高级设置;(多租户技术)
  4、 采用Gateway的概念,使得完备份更加简单;(gateway)
  5、 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工
    作。(分布式)

  缺点:

  没有集成Lucene的新功能

三、Solr

  Solr是Apache Lucene项目的开源企业搜索平台。主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本的处理。是高度可扩展的,并提供了分布式搜索和索引复制。是最流行的企业级搜索引擎。是一个独立的全文搜索服务器。

  优点:

  1、 有一个更大、更成熟的用户、开发和贡献者社区;
  2、 不考虑建索引的同时进行搜索,速度更快;
  3、 支持添加多种格式的索引。

  缺点:

  建立索引时,搜索效率下降,实时索引搜索效率不高。

  对比

  单纯的对已有数据进行搜索时,Solr更快


图一

  实时建立索引时,Solr会产生io阻塞,查询性能较差,Elasticsearch具有更明显的优势。


图二
图三
  总结

  相对来讲,如果考虑静态搜索,Sorl相对更合适;如果考虑实时,涉及到分布式,Elastic相对合适。

上一篇 下一篇

猜你喜欢

热点阅读