天天看点

几种常见的基于Lucene的开源搜索解决方案对比

说明:lucene 是一个 java 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作

优点:成熟的解决方案,有很多的成功案例。apache 顶级项目,正在持续快速的进步。庞大而活跃的开发社区,大量的开发人员。它只是一个类库,有足够的定制和优化空间:经过简单定制,就可以满足绝大部分常见的需求;经过优化,可以支持 10亿+ 量级的搜索。

说明:基于 lucene 的企业级搜索的开箱即用的解决方案

缺点:可定制性比 lucene 要差,一些不常见的需求,定制的难度比直接在 lucene 上做要大的多。性能上,由于 solr 的建索引和搜索是同一个进程,耦合度比较高,对于性能调优有一定的影响。

说明:基于 lucene 的,支持分布式,可扩展,具有容错功能,准实时的搜索方案。

优点:开箱即用,可以与 hadoop 配合实现分布式。具备扩展和容错机制。

缺点:只是搜索方案,建索引部分还是需要自己实现。在搜索功能上,只实现了最基本的需求。成功案例较少,项目的成熟度稍微差一些。因为需要支持分布式,对于一些复杂的查询需求,定制的难度会比较大。

ps:

<a href="http://www.verydemo.com/demo_c288_i60701.html" target="_blank">lucene 处理大规模数据的一些解决方法 katta</a>

<a href="http://sishuok.com/forum/blogpost/list/5453.html" target="_blank">katta源码分析</a>

<a href="https://issues.apache.org/jira/browse/solr-1395" target="_blank">solr与katta整合讨论</a>

<a href="https://issues.apache.org/jira/browse/lucene-532?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel" target="_blank">lucene patch 532</a>

说明:map/reduce 模式的,分布式建索引方案,可以跟 katta 配合使用。

优点:分布式建索引,具备可扩展性。

缺点:只是建索引方案,不包括搜索实现。工作在批处理模式,对实时搜索的支持不佳。

优点:经过验证的解决方案,支持分布式,可扩展,丰富的功能实现

缺点:与 linkedin 公司的联系太紧密,可定制性比较差

说明:基于 lucene 的,分布式,云端,提供 rest 接口的搜索解决方案

优点:开箱即用,分布式,rest 接口,支持云端调用