源:http://blog.fulin.org/2010/11/search_solutions_compare.html
一 直接使用 Lucene ( http://lucene.apache.org )
- 说明:Lucene 是一个 JAVA 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作
- 优点:成熟的解决方案,有很多的成功案例。apache 顶级项目,正在持续快速的进步。庞大而活跃的开发社区,大量的开发人员。它只是一个类库,有足够的定制和优化空间:经过简单定制,就可以满足绝大部分常见的需求;经过优化,可以支持 10亿+ 量级的搜索。
- 缺点:需要额外的开发工作。所有的扩展,分布式,可靠性等都需要自己实现;非实时,从建索引到可以搜索中间有一个时间延迟,而当前的“近实时”(Lucene Near Real Time search)搜索方案的可扩展性有待进一步完善
二 Solr ( http://lucene.apache.org/solr/ )
- 说明:基于 Lucene 的企业级搜索的开箱即用的解决方案
- 优点:比较成熟的解决方案,也有很多的成功案例。Lucene 子项目,实现了大部分常见的搜索功能需求,包括 facet 搜索(搜索结果分类过滤)等。
- 缺点:可定制性比 Lucene 要差,一些不常见的需求,定制的难度比直接在 Lucene 上做要大的多。性能上,由于 Solr 的建索引和搜索是同一个进程,耦合度比较高,对于性能调优有一定的影响。
三 Katta ( http://katta.sourceforge.net/ )
- 说明:基于 Lucene 的,支持分布式,可扩展,具有容错功能,准实时的搜索方案。
- 优点:开箱即用,可以与 Hadoop 配合实现分布式。具备扩展和容错机制。
- 缺点:只是搜索方案,建索引部分还是需要自己实现。在搜索功能上,只实现了最基本的需求。成功案例较少,项目的成熟度稍微差一些。因为需要支持分布式,对于一些复杂的查询需求,定制的难度会比较大。
四 Hadoop contrib/index ( http://svn.apache.org/repos/asf/hadoop/mapreduce/trunk/src/contrib/index/README )
- 说明:Map/Reduce 模式的,分布式建索引方案,可以跟 Katta 配合使用。
- 优点:分布式建索引,具备可扩展性。
- 缺点:只是建索引方案,不包括搜索实现。工作在批处理模式,对实时搜索的支持不佳。
五 LinkedIn 的开源方案 ( http://sna-projects.com/ )
- 说明:基于 Lucene 的一系列解决方案,包括 准实时搜索 zoie ,facet 搜索实现 bobo ,机器学习算法 decomposer ,摘要存储库 krati ,数据库模式包装 sensei 等等
- 优点:经过验证的解决方案,支持分布式,可扩展,丰富的功能实现
- 缺点:与 linkedin 公司的联系太紧密,可定制性比较差
-
Bobo的可定制性是比较差,代码结构不是很好。
六 ElasticSearch ( http://www.elasticsearch.com/ )
- 说明:基于 Lucene 的,分布式,云端,提供 rest 接口的搜索解决方案
- 优点:开箱即用,分布式,rest 接口,支持云端调用
- 缺点:一个新的项目,没有经过很多的验证。(只有一个人在开发?)分片的数目不能动态调整,只能在初始化索引的时候指定(跟 HBase 不一样的地方)
七 Lucandra ( https://github.com/tjake/Lucandra )
- 说明:基于 Lucene,索引存在 cassandra 数据库中
- 优点:参考 cassandra 的优点
- 缺点:参考 cassandra 的缺点。另外,这只是一个 demo,没有经过大量验证
八 HBasene ( https://github.com/akkumar/hbasene )
- 说明:基于 Lucene,索引存在 HBase 数据库中
- 优点:参考 HBase 的优点
- 缺点:参考 HBase 的缺点。另外,在实现中,lucene terms 是存成行,但每个 term 对应的 posting lists 是以列的方式存储的。随着单个 term 的 posting lists 的增大,查询时的速度受到的影响会非常大
分享到:
相关推荐
几种常见的基于Lucene的开源搜索解决方案对比,大家参考一下。
总的来说,基于Lucene的中型搜索引擎(C#)结合了开源的全文检索库和C#语言的优势,为企业或个人开发自定义搜索引擎提供了一种高效且灵活的解决方案。通过深入理解Lucene的原理和ShootSearch的优化策略,开发者可以...
在这一领域,Apache Lucene与Struts框架的结合成为了一种高效且灵活的解决方案。本文深入探讨了基于Lucene的搜索引擎如何在Struts框架中得以应用,以及这种结合所带来的优势。 #### Lucene:全文检索引擎的基石 ...
Lucene不是一个完整的搜索引擎解决方案,而是一套用于构建全文检索系统的工具集。它提供了完整的查询和索引引擎,以及一系列API,使得开发者可以轻松地将全文检索功能集成到自己的应用程序中。Lucene的核心优势在于...
此外,对于大型网站,可能需要分布式搜索解决方案,如Solr或Elasticsearch,它们基于Lucene,但提供了更高级的功能和集群能力。 总的来说,Lucene.Net为C#开发者提供了强大的站内搜索工具,通过理解和掌握其工作...
在实际应用中,LUCENE还可以与其他技术结合,例如Solr或Elasticsearch,提供更强大的分布式搜索解决方案。此外,为了优化性能,可以考虑使用内存缓存、分布式索引、倒排索引压缩等策略。 总的来说,LUCENE提供了...
全文检索技术,尤其是基于Lucene的解决方案,为企业和个人提供了高效管理大规模文档的方法。通过对Lucene系统结构、索引机制以及应用实例的分析,可以看出Lucene的强大功能和灵活性。未来随着大数据技术的发展,全文...
通过理解并熟练运用Document、Field、Directory、Analyzer和IndexWriter等核心概念,开发者可以构建出高效的全文搜索解决方案,实现类似搜索引擎的功能。在实际应用中,可以根据需求调整分析器、优化索引策略,以...
它最初由 Java 版本的 Lucene 发展而来,旨在为 .NET 开发者提供一个强大而灵活的搜索解决方案。随着项目的演进,Lucene.Net 经历了从开源到商业化的转变。 **1.1 Lucene.Net 的历史背景** - **开源阶段**:Lucene...
Lucene和Nutch是两个在开源社区广泛使用的搜索引擎技术,它们为开发者提供了构建高效、可扩展的搜索解决方案。本篇将围绕“Lucene+Nutch搜索引擎开发”这一主题,深入探讨王学松源代码,帮助读者理解并掌握这两项...
基于Lucene的全文搜索引擎MYSearch是通过利用Lucene开源框架来实现的。Lucene本身是一个全文索引引擎工具包,它不提供直接的搜索引擎界面,而是一系列用于文档索引和搜索的Java API。全文搜索引擎的核心工作流程包括...
总之,开源搜索网站提供了一种灵活、可定制的搜索解决方案,有助于开发者和企业构建自己的搜索平台,同时享受开源社区的持续支持和改进。通过深入了解和实践,你可以充分利用这些工具,提升你的搜索应用体验。
在IT领域,全文搜索引擎是数据检索的重要工具,而Apache Lucene是一个开源的、高性能的全文检索库,广泛应用于各种项目中。本项目“实现多种文件格式的Lucene全文搜索功能的DOM实例”专注于利用Lucene来处理不同类型...
本项目"ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现_project"旨在提供一种解决方案,利用现代Web技术和开源全文搜索引擎库来创建用户友好的搜索体验。 首先,ASP.NET是Microsoft开发的一个用于构建动态Web应用...
Lucene是Apache软件基金会...无论你是希望为网站添加搜索功能,还是构建大型的企业级搜索解决方案,Lucene都是值得信赖的选择。通过学习和使用Lucene源码,你可以更深入地理解全文检索的工作机制,提升自己的开发技能。
Lucene作为Apache软件基金会的一个开源项目,是Java领域内最著名的全文搜索引擎库,而IKAnalyzer则是针对中文分词的优秀解决方案。本篇文章将详细介绍如何利用Lucene4.0和IKAnalyzer2012来构建一个高性能的中文全文...
【Lucene】是一个由Apache软件基金会开发的开放源代码全文搜索引擎库,主要用Java语言编写。它是信息检索(IR)库,允许开发者为他们...通过深入学习和实践,开发者可以利用Lucene构建出满足特定需求的搜索引擎解决方案。
开源的搜索引擎工具包和Web搜索引擎系统为开发者提供了构建高效、自定义化的搜索解决方案的基础。本文将介绍几个知名的开源项目,包括Lucene、LIUS、Egothor和Xapian。 1. **Lucene** Lucene是由Apache基金会维护...