Solr和Lucene的区别


163

我知道Lucene和Solr是两个可以一起工作的Apache项目,但是我不明白每个项目的目的是什么。

我到目前为止所了解的是,Lucene用于创建搜索索引,而Solr使用该索引执行搜索。我是对的还是这是完全不同的方法?


5
lucene.apache.org/solr(和Lucene的等效页)答案是什么?
NPE

是的,您说对了,solr功能页面阐明了差异。如果我了解我可以单独使用Lucene,但是Solr需要Lucene来工作。
darkheir 2013年

2
与Lucene不同,Solr是一个Web应用程序(WAR),可以部署在任何servlet容器中,例如Jetty,Tomcat,Resin等。Solr可以由非程序员安装和使用。Lucene不能。有关lucenetutorial.com/lucene-vs-solr.html的
幸运

Answers:


229

@darkheir:Lucene和Solr是两个可以一起工作的Apache项目,我不明白每个项目的目的是什么。

1)Solr在引擎盖下使用Lucene。Lucene不了解Solr API。

2)Lucene是强大的搜索引擎框架,可让我们向应用程序中添加搜索功能。它公开了一个易于使用的API,同时隐藏了所有与搜索相关的复杂操作。任何应用程序都可以使用此库,而不仅仅是Solr。

3)Solr是围绕Lucene构建的。它不仅是围绕Lucene的http包装器,而且为Lucene添加了更多的武器库。Solr可以直接使用。它是一个Web应用程序,除了提供Lucene提供的功能外,还提供相关的基础结构和更多功能。

@darkheir:Lucene用于创建搜索索引,Solr使用该索引执行搜索。我是对的还是这是完全不同的方法?

4)Lucene不仅为Solr创建消耗量的索引。Lucene处理所有与搜索有关的操作。任何应用程序都可以使用Lucene框架。

例如,Solr,Elastic Search,LinkedIn(是的,在后台)等等。

看看这篇文章:Lucene vs Solr

更新(6/18/14)

何时使用Lucene?

  • 您是搜索工程师,并且
  • 您是一名程序员,并且
  • 您想要完全控制Lucene AND的几乎所有内部​​功能
  • 您的要求要求您对Lucene AND进行各种各样的怪异定制
  • 您愿意照顾您搜索的基础结构元素,例如扩展,分布等。

何时使用Solr?

  • 以上至少一项是没有道理的。要么
  • 您需要可以立即使用的东西(即使没有Java知识)或
  • 您的基础架构要求胜过搜索自定义要求。

注意:我并不是说Solr很难自定义。Solr非常灵活,并提供了许多可插拔的API点,使您可以插入代码。

有些人属于“ 必须使用Lucene ”阵营,但由于它易于使用,因此仍然偏爱Solr而不是普通的Lucene。但是,他们从不限制自己最大程度地定制Solr。

顺便说一句,我发现Solr(4.x)上的资源比Lucene(4.x)多。


31

Lucene是一个低级Java库(具有到.NET的端口等),它实现索引,分析,搜索等。

Solr是使用Lucene的独立的预配置产品/ webapp。如果您更喜欢使用HTTP API而不是Java API,那么Solr适合您。Solr在顶部还具有一些额外的功能(例如,分组)。


21

概念化Solr和Lucene之间关系的一种简单方法是汽车及其引擎。您不能驾驶发动机,但可以驾驶汽车。同样,Lucene是一个程序库,不能按原样使用,而Solr是一个完整的应用程序,可以直接使用。

来源:Lucene-vs-solr-Lucene教程


5
这是从lucenetutorial.com/lucene-vs-solr.html复制粘贴的。每当您复制粘贴答案引用源代码时,请提及源代码。;)
幸运

1
专页现在似乎已离线。
dev_feed

15

Solr建立在lucene之上,以提供搜索平台。

搜索平台从下至上分为以下几层:

  • 数据
    • 目的:代表各种数据类型和源
  • 文件建设
    • 目的:建立用于索引的文档信息
  • 索引和搜索
    • 目的:构建和查询文档索引
  • 逻辑增强
    • 目的:用于处理搜索查询和结果的附加逻辑
  • 搜索平台服务
    • 目的:添加搜索引擎核心的其他功能以提供服务平台。
  • UI应用
    • 目的:最终用户搜索界面或应用程序

太阳能堆栈

参考文章:企业搜索


12

SOLR是Lucene索引的包装

简单理解:SOLR是汽车,Lucene是其引擎。您只需要知道如何驾驶汽车(SOLR),还需要了解一些发动机(Lucene)的知识,以防您的汽车发动机出现任何问题。

安全开车:)


3
更不用说如果您愿意的话,可以使用Lucene引擎建造自己的汽车。
暗示

1

您可以通过以下方式来想象-Apache Lucene是Apache Solr内部使用的库。它用Java编写,并提供了惊人的全文本搜索和索引功能。它可以分析来自世界各地的大量语言,并准备使用这些语言编写的文本,以便高效,快速地进行搜索和分析。Lucene是一个库-您可以在应用程序中直接使用它并自己实现所有功能,但是Apache Solr提供了许多现成的功能。

Apache Solr搜索引擎提供了诸如HTTP API之类的功能,您可以使用这些功能将数据发送给它们,然后在该数据上进行搜索。您可以使用API​​控制搜索引擎,创建分布式环境并自动在多个节点之间以及许多其他节点之间分布数据。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.