【问题标题】:How are SOLR and Lucene related?SOLR 和 Lucene 有什么关系?
【发布时间】:2011-09-19 19:58:42
【问题描述】:

例如 ZF 是一堆用 PHP 编写并在 Apache 上运行的代码(假设是 Web 服务器...)

SOLR 是在 Lucene 上运行的东西吗?用 Java 编写并在某个 servlet 容器上运行。
那“东西”是什么? Lucene 的 SOLR 是什么?
Lucene 本身给了我什么功能?

【问题讨论】:

  • 有趣的是,您将问题标记为“搜索引擎”,而您却在问我们 SOLR 是什么!
  • @Raunak 不确定搜索引擎是什么,SOLR 或 Lucene...

标签: java lucene solr search-engine


【解决方案1】:

Lucene 是一个打包为 JAR 的 Java 库,用于执行信息索引和检索操作。 SOLR 是一个独立的全文搜索应用程序,在使用底层 Lucene 库作为其内部 api 的一部分时,它提供了点击突出显示和分面搜索等功能。

Lucene 本身为您提供了通过 Java API 为独立于文件格式的文档建立索引并检索它们的方法,但它没有提供功能齐全的基于 Web 的搜索应用程序所需的大量支持功能,SOLR 帮助填补了这一点差距。 SOLR 中的索引和搜索通常通过 GET 和 POST 完成,使其更容易用作 Web 应用程序的基础设施,无论它们是用什么语言编写的。

【讨论】:

  • 让我的 webapp(用 PHP 编写)在不同的 Apache 上运行,然后在 SOLR 上运行,并从我的 PHP 代码中查询该服务器,这是一种好习惯吗?
  • 我就是这样做的,而且我一直看到它是这样做的。我有一个 Rails 应用程序,它对运行在单独实例上的 SOLR 服务器发出请求,对于我的 java 应用程序也是如此。在您的情况下,如果您在 Apache HTTP 服务器上有一个 PHP 应用程序,那么您很可能会有一个单独的 Tomcat 或 Jetty 实例运行 SOLR。
【解决方案2】:

Lucene 是一个基于 Java 的搜索引擎。它在 JVM 中运行;它不需要 Web 容器。它按照开发人员的指示为文档创建索引,并使用它来执行索引搜索。

SOLR 是一个 Web 应用程序,部署在 servlet 容器中,它提供了一个 Web 前端,用于对文档集合进行 Lucene 索引搜索。

【讨论】:

  • 那么,如果 IO 有一个用 PHP 编写的网站,并且我需要在我的 PHP 页面中显示/读取结果,那么采用 SOLR 方式并不是很聪明,我应该直接使用 Lucene 吗?还是从 php 使用 SOLR 有什么好处?
  • @ItayMoav 我会使用 SOLR 并从您的应用程序中调用它。 SOLR 提供了一个很好的 RESTful API 来进行搜索。直接从 php 与 Lucene 交互会更困难。
【解决方案3】:

Lucene 本身并不是一个搜索引擎。这是一个可以创建的库。

打个比方,Lucene 与 Solr 的关系就像引擎与汽车的关系一样。您可以使用内燃机制造不同的车辆,但仅靠内燃机不会让您走得太远。

【讨论】:

  • 我可以使用 Lucene 进行关键字驱动的搜索。索引文档,然后搜索文档。在 SOLR 出现之前确实如此。我不认为第一种说法是正确的。
  • 最被接受的搜索引擎definition 是它是面向用户的系统,允许检索某些文档集合。因此,如果您编写代码来执行查询,那么它还不算数,至少对我来说:)
  • 如果我在命令行而不是在浏览器中输入关键字,那么我符合您的定义。这就是在 SOLR 之前使用 Lucene 可以做到的。
  • 我想你说的是Lucene Demo,所以它已经是一些建立在Lucene之上的软件了。我不想分裂头发,也不想争论术语。我想说的是,如果有人不打算构建定制的搜索解决方案并调用 Java API(我认为那个提问者就是这种情况),那么 Solr 就是要走的路。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
相关资源
最近更新 更多