175

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

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

4

8 回答 8

241

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

  1. Solr 在后台使用 Lucene。Lucene 不知道 Solr API。

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

  3. Solr 是围绕 Lucene 构建的。它不仅仅是一个围绕 Lucene 的 http 包装器,而且为 Lucene 添加了更多的武器库(已归档)。Solr 开箱即用。它是一个 Web 应用程序,除了 Lucene 提供的功能外,还提供相关的基础设施和更多功能。

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

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

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

查看这篇文章:Lucene vs Solr

更新(2014 年 6 月 18 日)

什么时候使用 Lucene?

  • 你是一名搜索工程师并且
  • 你是一个程序员并且
  • 您希望完全控制 Lucene 的几乎所有内部​​结构和
  • 您的要求要求您对 Lucene 和
  • 您愿意处理搜索的基础设施元素,例如扩展、分发等。

什么时候使用 Solr?

  • 以上至少一项没有意义。或者
  • 您想要开箱即用的东西(即使没有 Java 知识)或
  • 您的基础架构要求超过了搜索自定义要求。

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

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

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

于 2013-03-29T15:49:13.917 回答
34

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

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

于 2013-03-29T15:39:12.897 回答
24

概念化 Solr 和 Lucene 之间关系的一种简单方法是汽车及其引擎。你不能开引擎,但你可以开汽车。同样,Lucene 是一个程序库,您不能按原样使用它,而 Solr 是一个完整的应用程序,您可以开箱即用。

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

于 2014-06-18T13:00:36.600 回答
17

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

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

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

solr 堆栈

参考文章:企业搜索

于 2016-11-11T16:05:57.213 回答
14

SOLR 是Lucene 索引的包装器。

很容易理解:SOLR 是汽车,Lucene 是它的引擎。您只需要知道如何驾驶汽车(SOLR),还需要了解引擎(Lucene)的一些知识,以防您的汽车引擎出现任何问题。

安全驾驶:)

于 2016-08-25T12:00:09.837 回答
1

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

Apache Solr 搜索引擎提供了诸如 HTTP API 之类的东西,您可以使用这些 API 向它们发送数据,然后在该数据上进行搜索。您可以使用 API 控制搜索引擎,创建分布式环境并自动将数据分布到多个节点等等。

于 2020-03-25T17:47:05.997 回答
0

你可以在这里找到关于 lucence 和 solar 用途的很好的比较:

http://www.lucenetutorial.com/lucene-vs-solr.html

TLDR:Lucence 只是引擎,Solar 是您可以驾驶的汽车(配备了 rest-api 等)

于 2017-09-05T07:05:07.077 回答
0

Apache Lucene 是搜索引擎的香草版本,而Apache Solr 继承了 Lucene,具有 Apache Lucene 开箱即用不提供的新内置功能。

您可以使用 Apache Solr 风格而不是使用 Apache Lucene 来节省您的资源和手动工作。如果您想创建自己的定义,您也可以在 Solr 和 Lucene 中通过添加自定义 jar 和自定义代码来完成。

于 2021-11-27T13:29:04.287 回答