将Solr集成到现有的Web应用程序中

3

我知道有关于这个主题的其他问题,并且我阅读了一些网上的教程(http://shrutiags.wordpress.com/2012/05/29/adding-solr-to-your-web-application-part-3-integrating-solr-with-eclipse-2/http://javaskeleton.blogspot.de/2011/07/adding-solr-to-existing-web-application.html)。但我仍有一些未解决的问题。

1)两个教程都使用EmbeddedSolrServer来访问Solr,这是否意味着Solr不作为单独的应用程序运行?那我们为什么需要指定过滤器和servlet呢?

2)两个教程都使用复制和粘贴的jar包。应该使用哪些maven依赖项呢?

3)我仍然不确定嵌入式和独立式将Solr集成到现有Web应用程序中的区别。据我所知,独立式意味着将Solr war文件部署为单独的应用程序。在这种情况下,我们不应该指定任何servlet或过滤器,只需使用Solrj连接到运行中的Solr实例即可。

当我们想将Solr作为我们应用程序的一部分运行时会发生什么变化?我们需要添加更多的依赖项,而不仅仅是Solrj。我们还需要以某种方式初始化Solr核心。我理解的对吗?

1个回答

4

回答您的问题:

1)您不必总是使用EmbeddedSolrServer... Solr可以部署在应用服务器或servlet容器中作为"独立"Web服务,这意味着您无需指定过滤器和servlets,只需将其部署在某个地方(tomcat、jetty、glassfish等),并在应用程序中定义一个 "SolrServer":SolrServer server = new CommonsHttpSolrServer(solrServerAddress) ,然后使用它与Solr进行通信。

2)从我的设置中,我有以下maven依赖项来使用一个独立的Solr:

<dependency>
    <artifactId>solr-solrj</artifactId>
    <groupId>org.apache.solr</groupId>
    <version>1.4.0</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>

您可能需要定义其他依赖项(例如:如果您想要EmbeddedSolrServer),请在此处找到详细信息:http://wiki.apache.org/solr/Solrj#Maven。您还需要确保在Maven依赖项中有slf4j。
3)如果它是独立运行的,则需要执行一些其他操作,但不需要定义任何servlet或过滤器。
关于问题:“当我们想将Solr作为应用程序的一部分运行时,会发生什么变化?我们需要添加更多的依赖项,而不仅仅是Solrj。”是的,您需要...您可以在来自Solr的上面链接中找到相关信息。

我还有一个问题。为什么这两个教程使用servlets和filters?在独立和嵌入式的两种方式中,我们都不需要定义servlets。 - Konstantin Milyutin
我认为是因为他们想使用“EmbeddedSolrServer”...如果您使用独立的服务器,您不需要定义servlets/filters,因为这只是在某个地方部署的另一个Web服务。如果您将其定义为嵌入式,则必须像教程中所做的那样定义servlets/filters。 - emgsilva
我在Ubuntu上使用solrj处理独立的Solr查询时遇到了问题,但在Windows上它可以完美地处理并返回结果。你能给我提供任何解决方案吗? - Sumit Ramteke
HTTP状态500 - 请求处理失败;嵌套异常是org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException:期望的内容类型为application/octet-stream,但得到的是text/html;charset=utf-8。 - Sumit Ramteke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接