solr和lucene之间的区别

时间:2013-03-29 13:51:01

标签: java solr lucene

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

根据我的理解,直到现在,Lucene用于创建搜索索引,Solr使用此索引执行搜索。 我是对的还是这是一种完全不同的方法?

7 个答案:

答案 0 :(得分:213)

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

1)Solr在引擎盖下使用Lucene。 Lucene对Solr API一无所知。

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

3)Solr围绕Lucene建造。它不仅仅是Lucene的http包装器,而是has been known to add more arsenal to Lucene。 Solr即用即用。它是一个Web应用程序,除Lucene提供的功能外,还提供相关的基础结构和更多功能。

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

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

例如Solr,Elastic Search,LinkedIn(是的,引擎盖下)等。

查看此文章:Lucene vs Solr

更新(2014年6月18日)

何时使用Lucene?

  • 您是搜索工程师和
  • 您是程序员和
  • 您希望完全控制Lucene AND
  • 的几乎所有内部
  • 您的要求要求您对Lucene AND进行各种令人讨厌的自定义
  • 您愿意照顾搜索的基础设施元素,例如缩放,分发等。

何时使用Solr?

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

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

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

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

答案 1 :(得分:27)

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

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

答案 2 :(得分:19)

  

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

来源:Lucene-vs-solr - Lucene Tutorial

答案 3 :(得分:9)

SOLR是Lucene索引的包装器

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

安全驾驶:)

答案 4 :(得分:9)

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

从下到上搜索以下图层中的平台:

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

solr stack

参考文章:Enterprise search

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

你可以在这里找到关于lucence和solar的目的的一个很好的比较:

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

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