Solr和Lucene,包括在Web应用程序中

时间:2015-04-13 22:55:26

标签: mysql web-applications solr lucene

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

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

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

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

  1. 使用EmbeddedSolr
  2. “自建solr”(http://javaskeleton.blogspot.de/2011/07/adding-solr-to-existing-web-application.html
  3. 我应该采用哪种方式来实现对我的网络应用的搜索?

    或者我应该切换到 Lucene

2 个答案:

答案 0 :(得分:0)

第二种方式看起来很旧,虽然这篇文章似乎已被删除,但我认为我从标题中得到了作者的意思。

IMO第一种方式更好,因为你将使用Solr,因为它应该被用作黑盒子,而不会与你的webapp混淆。

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

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

答案 1 :(得分:0)

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

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

在我的网络应用中,我创建了@WebListener。这将创建一个索引,并在我的web-app开始时删除它(如果已存在)。

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

在我的SearchService(REST)中,我构建了QuerySearch,并访问了此索引。

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

随意,给我一些建议或最佳实践。