Solr和Lucene的区别

187

我知道Lucene和Solr是两个不同的Apache项目,它们旨在协同工作,但我不明白每个项目的目标。

根据我目前的了解,Lucene用于创建搜索索引,而Solr使用这些索引执行搜索。 我是正确的吗?还是这是完全不同的方法?


6
http://lucene.apache.org/solr/(以及Lucene的等效页面)难道不回答这个问题吗? - NPE
1
是的,你说得对,Solr的功能页面澄清了这一点。如果我理解正确的话,我可以单独使用Lucene,但是Solr需要Lucene才能工作。 - darkheir
2
与Lucene不同,Solr是一个Web应用程序(WAR),可以部署在任何servlet容器中,例如Jetty、Tomcat、Resin等。Solr可以被非程序员安装和使用,而Lucene则不能。更多信息请参见http://www.lucenetutorial.com/lucene-vs-solr.html。 - Lucky
8个回答

252

@darkheir: Lucene和Solr是两个不同的Apache项目,它们被设计为一起工作,我不明白每个项目的目的是什么。

  1. Solr在底层使用了Lucene。Lucene对Solr API一无所知。

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

  3. Solr是围绕Lucene构建的。它不仅仅是一个http封装器,还已经被知道加入了更多武器库到Lucene(存档)。Solr可以直接使用,它是一个Web应用程序,除了Lucene提供的功能外,还提供了相关基础设施和更多功能。

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

  1. Lucene不仅为Solr创建索引,它还处理所有与搜索相关的操作。任何应用程序都可以使用Lucene框架。

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

请查看这篇文章:Lucene vs Solr

更新(6/18/14)

何时使用Lucene?

  • 您是搜索工程师且
  • 您是程序员且
  • 您想要对Lucene的几乎所有内部进行全面控制且
  • 您的要求需要对Lucene进行各种怪异的自定义且
  • 您愿意照顾搜索的基础设施元素,如扩展、分布等。

何时使用Solr?

  • 以上内容中至少有一条不太容易理解。或者
  • 你需要一个开箱即用的东西(即使没有 Java 知识),或者
  • 你的基础设施要求超过搜索定制要求。

注意: 我并不是指 Solr 很难定制。Solr 非常灵活,提供了许多可插拔的 API 点,允许您投入自己的代码。

有些人属于“必须使用 Lucene”阵营,但仍然更喜欢 Solr 而不是纯 Lucene,因为它很容易使用。然而,他们从来不会限制自己最大程度地定制 Solr。

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


36

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

Solr是一个独立的预配置产品/网页应用程序,它使用Lucene。如果您更喜欢处理HTTP API而不是Java API,则Solr适合您。Solr还具有一些额外的顶层功能(例如分组)。


24
一种简单的理解Solr和Lucene之间关系的方式就是把它们比作车和发动机。你不能直接驾驶一个发动机,但你可以驾驶一辆车。同样地,Lucene是一个编程库,你不能直接使用它,而Solr则是一个完整的应用程序,你可以直接使用它。
来源:Lucene-vs-solr - Lucene教程

7
请注意,您所提供的内容已被检测出是从http://www.lucenetutorial.com/lucene-vs-solr.html复制粘贴的。在引用答案时,请注明来源。;) - Lucky
1
页面似乎现在已经离线。 - dev_feed

21

Solr是建立在Lucene之上的搜索平台。

搜索平台从下到上有以下几个层次:

  • 数据
    • 目的:代表各种数据类型和来源
  • 文档构建
    • 目的:为索引构建文档信息
  • 索引和搜索
    • 目的:构建和查询文档索引
  • 逻辑增强
    • 目的:为处理搜索查询和结果添加附加逻辑
  • 搜索平台服务
    • 目的:将搜索引擎核心的额外功能添加到服务平台中。
  • 用户界面应用程序
    • 目的:面向最终用户的搜索界面或应用程序

solr stack

参考文章:企业搜索


15

SOLR是Lucene索引的包装器

它很容易理解: SOLR是汽车,Lucene是它的引擎。你只需要知道如何驾驶汽车(SOLR),并且在遇到任何问题时也需要了解一些引擎(Lucene)方面的知识。

祝您驾车愉快 :)


3
更不用说,如果你有兴趣的话,你可以使用Lucene引擎来自己制造汽车。 - hintss

1
你可以这样想 - Apache Lucene是Apache Solr内部使用的库。它用Java编写,提供了惊人的全文搜索和索引功能。它可以分析来自世界各地的大量语言,并准备好这些语言的文本以进行高效快速的搜索和分析。Lucene是一个库 - 你可以直接在应用程序中使用它并自己实现一切,但Apache Solr提供了很多开箱即用的功能。
Apache Solr搜索引擎提供了HTTP API等功能,您可以使用它们将数据发送到搜索引擎,然后对该数据进行搜索。您可以使用API控制搜索引擎,创建分布式环境并自动将数据分布到多个节点等等。

1

0

Apache Lucene是搜索引擎的原始版本,而Apache Solr继承了Lucene并具有新的内置功能,这些功能Apache Lucene无法提供。

您可以使用Apache Solr版本来节省资源和手动努力,而不是使用Apache Lucene。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接