【问题标题】:Solr and Lucene, including in web applicationSolr 和 Lucene,包括在 Web 应用程序中
【发布时间】:2015-06-19 10:02:25
【问题描述】:

我想将简单的搜索功能添加到现有的 Java 网络应用程序中。 应在现有数据库字段上进行搜索。 它是一个部署在 wildfly、REST-Services 和 MySql-DB 上的网络应用程序。

经过一番研究,我的第一印象是,使用 Solr 我会得到我想要的。

但是:由于不允许我在客户环境中再部署一个应用程序,Solr 不再适合。

据我了解,有两种方法可以解决此问题:

  1. 使用 EmbeddedSolr
  2. “自建 solr”(http://javaskeleton.blogspot.de/2011/07/adding-solr-to-existing-web-application.html)

我应该走哪条路,对我的网络应用实施搜索?

或者我应该切换到 Lucene 吗?

【问题讨论】:

  • 欢迎来到stackoverflow。不幸的是,您似乎就一个非常广泛的问题征求意见。这就是您的问题不适合此处的两个原因。您最好尝试提出准确而清晰的问题,如有必要,将您的问题分成不同的部分。
  • 我不确定我是否得到了你,但这种问题是基本的恕我直言。取决于此,我必须决定走哪条路。

标签: mysql web-applications solr lucene


【解决方案1】:

第二种方式似乎很旧,虽然帖子似乎已被删除,但我想我从标题中明白了作者的意思。

IMO 第一种方式更好,因为您将使用 Solr,因为它应该被使用,作为一个黑匣子,而不会与您的 web 应用程序混淆。

话虽如此,但请记住,嵌入式 solr 不是生产环境的好选择,因为它是一个独立的模块,主要是不可扩展的。

我建议你以一种解耦的方式编写你的 Solr 客户端代码:你的 webapp 应该只处理 SolrServer 抽象类。现在,您将在幕后实例化一个 EmbeddedSolrServer。稍后,如果您想扩展您的搜索服务,此设计将让您通过少量重构工作切换到另一个 impl(LBHttpServer、SolrCloud)。

【讨论】:

  • 谢谢。当我开始调查关于将搜索引擎添加到我的网络应用程序时,我无法找到一些最佳实践,如何处理我的问题,因为我不允许在客户端环境中部署更多应用程序,“只是用于搜索”。我试图找到一个解决方案来使用 Solr 来管理它,因为在我看来它在开始时更方便。但我没有找到解决方案,因为 Solr 是一个开箱即用的网络应用程序,并且没有“lib/ jar 解决方案”。所以我切换到 Lucene。
  • 好的,现在很清楚了。 Solr 相对于 Lucene 的优势和嵌入式 Solr 依赖于 Solr 在 Lucene 之上添加的那些功能(例如 faceting,更像这样等等)。因此,如果您需要一个“仅用于搜索”的库,Lucene 非常棒。
【解决方案2】:

所以我将描述我选择的方式。

首先,是的 Lucene 是我的朋友。

在我的网络应用程序中,我创建了一个@WebListener。这将创建一个索引,如果已经存在,则在我的网络应用程序启动时将其删除。

索引的内容是三个对象的一些数据库归档值,必须被搜索。

在我的 SearchService(REST) 中,我建立了我的 QuerySearch,并访问了这个索引。

另外,我想扩展现有的 REST 服务(尚未完成)。因此,在编辑 Index 中包含的 objectTypes (CUD) 时,必须更新 Index。

请随时给我一些建议或最佳做法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多