在我的Spring Data Solr教程的上一部分中,我们了解到Solr提供了一个类似REST的HTTP API,该API可用于向Solr索引添加信息并针对索引数据执行查询。 问题在于,在开发环境中运行单独的Solr实例有点麻烦。

但是,并非所有希望都因此而丧失,因为Solr提供了两个可供我们在应用程序中使用的替代服务器实现。 这些实现如下所述:

  • 嵌入式Solr服务器直接连接到Solr核心。 我们可以将此服务器用于开发目的,但我们还必须记住
    不建议在生产环境中使用它 。 但是,在开发环境中,使用嵌入式Solr服务器仍然是可行的选择。
  • HTTP Solr服务器通过使用HTTP连接到外部Solr服务器。 这是推荐使用Solr搜索服务器的方式,这就是为什么我们应该始终在生产环境中使用它的原因。

此博客文章描述了如何使用Maven获得所需的依赖关系。 我们还将学习配置Spring Data Solr以在开发环境中使用嵌入式Solr服务器,在生产环境中使用HTTP Solr服务器。

注意 :这些博客条目提供了其他信息,可以帮助我们理解此博客条目中描述的概念:

  • 使用Maven运行Solr
  • Spring Data Solr教程:Solr简介

让我们开始吧。

使用Maven获取所需的依赖关系

通过执行以下步骤,我们可以使用Maven获得所需的依赖关系:

  1. 将Spring Milestone Maven存储库添加到POM文件。
  2. 将所需的依赖项添加到pom.xml文件。

下面将更详细地描述这两个步骤。

将Spring Milestone Maven存储库添加到POM文件

通过将以下XML添加到pom.xml文件中,我们可以将Spring里程碑Maven存储库添加到我们的POM文件中:

<repositories><repository><id>spring-milestone</id><name>Spring Milestone Maven Repository</name><url>http://repo.springsource.org/libs-milestone</url></repository>
</repositories>

将所需依赖项添加到POM文件

我们可以按照以下步骤将所需的依赖项添加到POM文件:

  1. 将Spring Data Solr依赖性(版本1.0.0.RC1)添加到POM文件的依赖性部分。
  2. 将Solr核心依赖关系(版本4.1.0)添加到POM文件的依赖关系部分,并排除SLF4J JDK14绑定。 因为嵌入式Solr服务器需要Solr核心,所以如果我们不使用嵌入式Solr服务器,则可以跳过此步骤。

我们可以通过将以下XML添加到POM文件的“依赖关系”部分来完成这些步骤:

<!-- Spring Data Solr -->
<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-solr</artifactId><version>1.0.0.RC1</version>
</dependency><!-- Required by embedded solr server -->
<dependency><groupId>org.apache.solr</groupId><artifactId>solr-core</artifactId><version>4.1.0</version><exclusions><exclusion><artifactId>slf4j-jdk14</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions>
</dependency>

配置Spring Data Solr

本节描述了我们如何配置Spring Data Solr以在开发和生产环境中使用不同的Solr服务器。 我们将在开发环境中使用嵌入式Solr服务器,在生产环境中使用HTTP Solr服务器。

我们可以按照以下步骤配置Spring Data Solr:

  1. 创建一个属性文件。
  2. 配置嵌入式Solr服务器。
  3. 配置HTTP Solr服务器。
  4. 设置活动bean定义概要文件。

在以下小节中将更详细地描述这些步骤。

创建属性文件

我们的属性文件的名称为application.properties ,我们将使用它来配置两个属性,如下所述:

  • solr.server.url属性指定使用的Solr服务器的URL。 此属性的值用于配置在生产环境中使用的HTTP Solr服务器。
  • solr.solr.home配置Solr的主目录。 此属性的值用于配置开发环境中使用的嵌入式Solr服务器的主目录。

application.properties文件的内容如下所示:

solr.server.url=http://localhost:8983/solr/
solr.solr.home=

配置嵌入式Solr服务器

本小节描述了如何在开发环境中配置Spring Data Solr以使用嵌入式Solr服务器。

Java配置

我们可以按照以下步骤创建一个配置类来配置嵌入式Solr服务器:

  1. 创建一个名为EmbeddedSolrContext的类,并使用@Configuration注释对该类进行注释。
  2. 通过使用@EnableSolrRepositories批注注释该类并配置我们的Solr信息库的根软件包,来启用Spring Data Solr信息库。
  3. @Profile注释注释创建的类,并将其值设置为'dev'。 这意味着除非激活了“ dev”配置文件,否则将忽略此配置类。
  4. @PropertySource批注注释该类,并将其值设置为'classpath:application.properties'。 这将配置属性文件的位置,并向Spring的Environment添加一个PropertySource
  5. 在类中添加一个Environment字段,并使用@Resource注释对该字段进行注释。 注入的环境用于访问我们添加到属性文件中的属性。
  6. 创建一个名为solrServerFactoryBean()方法和注释这种方法与@Bean注解。 此方法的实现创建一个新的EmbeddedSolrServerFactoryBean对象,设置Solr home的值并返回创建的对象。
  7. 创建一个名为solrTemplate()方法和注释这种方法与@Bean注解。 这种方法的实现创建一个新的SolrTemplate对象,并将所使用的SolrServer执行作为构造器参数。

EmbeddedSolrContext类的源代码如下所示:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.data.solr.core.SolrTemplate;
import org.springframework.data.solr.repository.config.EnableSolrRepositories;
import org.springframework.data.solr.server.support.EmbeddedSolrServerFactoryBean;import javax.annotation.Resource;@Configuration
@EnableSolrRepositories("net.petrikainulainen.spring.datasolr.todo.repository.solr")
@Profile("dev")
@PropertySource("classpath:application.properties")
public class EmbeddedSolrContext {@Resourceprivate Environment environment;@Beanpublic EmbeddedSolrServerFactoryBean solrServerFactoryBean() {EmbeddedSolrServerFactoryBean factory = new EmbeddedSolrServerFactoryBean();factory.setSolrHome(environment.getRequiredProperty("solr.solr.home"));return factory;}@Beanpublic SolrTemplate solrTemplate() throws Exception {return new SolrTemplate(solrServerFactoryBean().getObject());}
}

XML配置

通过执行以下步骤,我们可以为嵌入式Solr服务器创建XML配置文件:

  1. 通过使用上下文名称空间的property-placeholder元素配置使用的属性文件。
  2. 启用S​​olr存储库并使用solr名称空间的repositories元素配置我们的Solr存储库的基本软件包。
  3. 为开发概要文件创建一个bean配置。
  4. 通过使用solr名称空间的Embedded-solr-server元素配置嵌入式Solr服务器Bean。 设置Solr主页的值。
  5. 配置Solr模板bean。 将配置的嵌入式Solr服务器bean设置为构造函数参数。

exampleApplicationContext-solr.xml文件的内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:solr="http://www.springframework.org/schema/data/solr"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/data/solr http://www.springframework.org/schema/data/solr/spring-solr.xsd"><context:property-placeholder location="classpath:application.properties"/><!-- Enable Solr repositories and configure repository base package --><solr:repositories base-package="net.petrikainulainen.spring.datasolr.todo.repository.solr"/><!-- Bean definitions for the dev profile --><beans profile="dev"><!-- Configures embedded Solr server --><solr:embedded-solr-server id="solrServer" solrHome="${solr.solr.home}"/><!-- Configures Solr template --><bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate"><constructor-arg index="0" ref="solrServer"/></bean></beans><!-- Bean definitions for the prod profile are omitted -->
</beans>

配置Http Solr服务器

本小节描述了如何配置Spring Data Solr以在生产环境中使用HTTP Solr服务器。

Java配置

我们可以按照以下步骤创建一个配置类来配置HTTP Solr服务器:

  1. 创建一个名为HttpSolrContext的类,并使用@Configuration注释对该类进行注释。
  2. 通过使用@EnableSolrRepositories批注注释该类并配置我们的Solr信息库的根软件包,来启用Spring Data Solr信息库。
  3. @Profile注释注释创建的类,并将其值设置为'prod'。 这意味着除非激活了“ prod”配置文件,否则将忽略此配置类。
  4. @PropertySource批注注释该类,并将其值设置为'classpath:application.properties'。 这将配置属性文件的位置,并向Spring的Environment添加一个PropertySource
  5. 在类中添加一个Environment字段,并使用@Resource注释对该字段进行注释。 注入的环境用于访问我们添加到属性文件中的属性。
  6. 创建一个名为solrServerFactoryBean()方法和注释这种方法与@Bean注解。 此方法的实现创建一个新的HttpSolrServerFactoryBean对象,设置Solr服务器url的值并返回创建的对象。
  7. 创建一个名为solrTemplate()方法和注释这种方法与@Bean注解。 这种方法的实现创建一个新的SolrTemplate对象,并将所使用的SolrServer执行作为构造器参数。

HttpSolrContext类的源代码如下所示:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.data.solr.core.SolrTemplate;
import org.springframework.data.solr.repository.config.EnableSolrRepositories;
import org.springframework.data.solr.server.support.HttpSolrServerFactoryBean;import javax.annotation.Resource;@Configuration
@EnableSolrRepositories("net.petrikainulainen.spring.datasolr.todo.repository.solr")
@Profile("prod")
@PropertySource("classpath:application.properties")
public class HttpSolrContext {@Resourceprivate Environment environment;@Beanpublic HttpSolrServerFactoryBean solrServerFactoryBean() {HttpSolrServerFactoryBean factory = new HttpSolrServerFactoryBean();factory.setUrl(environment.getRequiredProperty("solr.server.url"));return factory;}@Beanpublic SolrTemplate solrTemplate() throws Exception {return new SolrTemplate(solrServerFactoryBean().getObject());}
}

XML配置

通过执行以下步骤,我们可以为HTTP Solr服务器创建XML配置文件:

  1. 通过使用上下文名称空间的property-placeholder元素配置使用的属性文件。
  2. 启用S​​olr存储库并使用solr名称空间的repositories元素配置我们的Solr存储库的基本软件包。
  3. 为生产概要文件创建一个bean配置。
  4. 使用solr名称空间的solr-server元素配置HTTP Solr服务器Bean。 设置Solr服务器的URL。
  5. 配置Solr模板bean。 将配置的HTTP Solr服务器bean设置为构造函数参数。

exampleApplicationContext-solr.xml文件的内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:solr="http://www.springframework.org/schema/data/solr"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/data/solr http://www.springframework.org/schema/data/solr/spring-solr.xsd"><context:property-placeholder location="classpath:application.properties"/><!-- Enable Solr repositories and configure repository base package --><solr:repositories base-package="net.petrikainulainen.spring.datasolr.todo.repository.solr"/><!-- Bean definitions for the dev profile are omitted --><!-- Bean definitions for the prod profile --><beans profile="prod"><!-- Configures HTTP Solr server --><solr:solr-server id="solrServer" url="${solr.server.url}"/><!-- Configures Solr template --><bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate"><constructor-arg index="0" ref="solrServer"/></bean></beans>
</beans>

设置活动Bean定义配置文件

我们可以通过设置spring.profiles.active系统变量的值来选择活动bean定义概要文件。 下面描述了该系统变量的允许值(在示例应用程序的上下文中):

  • 通过将spring.profiles.active系统变量的值设置为'dev',我们可以配置我们的应用程序使其在开发配置文件中运行。
  • 当我们想要配置我们的应用程序以在生产配置文件中运行时,我们必须将spring.profiles.active系统变量的设置为'prod'。

通过执行以下步骤,我们可以将示例应用程序配置为支持两个概要文件:

  1. 将所需的配置文件添加到POM文件。
  2. 为系统属性创建特定于概要文件的属性文件。
  3. 配置Jetty Maven插件。

下面将更详细地描述这些步骤。

将所需的配置文件添加到POM文件

我们可以按照以下步骤将所需的配置文件添加到我们的Maven构建中:

  1. 创建开发环境的配置文件。 将此配置文件的ID设置为“ dev”,并将build.profile.id属性的值设置为“ dev”。
  2. 为生产环境创建配置文件。 将此配置文件的ID设置为“ prod”,并将build.profile.id属性的值设置为“ prod”。

我们的Maven配置文件的配置如下所示:

<profiles><profile><id>dev</id><properties><build.profile.id>dev</build.profile.id></properties></profile><profile><id>prod</id><properties><build.profile.id>prod</build.profile.id></properties></profile>
</profiles>

为系统属性创建特定于配置文件的属性文件

特定于个人档案的属性文件位于个人档案目录的子目录中。 每个子目录的名称都与pom.xml文件中配置的build.profile.id属性的值匹配。

我们可以按照以下步骤为系统属性创建特定于概要文件的属性文件:

  1. profiles / dev目录中创建一个名为system.properties的属性文件。 此属性文件包含开发配置文件的系统属性。
  2. profiles / prod目录中创建一个名为system.properties的属性文件。 此属性文件包含生产概要文件的系统属性。

用于配置开发概要文件的系统属性的属性文件的内容如下所示:

spring.profiles.active=dev

用于配置生产概要文件的系统属性的属性文件的内容如下所示:

spring.profiles.active=prod

配置Jetty Maven插件

我们可以按照以下步骤配置Jetty Maven插件 :

  1. 将Jetty Maven插件的插件声明添加到我们Pom文件的插件部分。
  2. 配置Jetty Maven插件的stopKey和stopPort。
  3. 配置包含使用的系统属性的属性文件的位置。

Jetty Maven插件的配置如下所示:

<plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>8.1.5.v20120716</version><configuration><stopKey>todostop</stopKey><stopPort>9999</stopPort><systemPropertiesFile>${project.basedir}/profiles/${build.profile.id}/system.properties</systemPropertiesFile></configuration></plugin>

摘要

现在,我们已经使用Maven成功地获得了必需的依赖关系,并配置了Spring Data Solr。 这篇博客文章教会了我们四件事:

  • 我们学会了使用Maven获得所需的依赖关系。
  • 我们知道我们仅应在开发环境中使用嵌入式Solr服务器,并了解了如何配置Spring Data Solr以使用它。
  • 我们了解到,我们应该始终在生产环境中使用HTTP Solr服务器,并且知道如何配置Spring Data Solr以使用它。
  • 我们知道如何使用Spring Framework的bean定义配置文件为开发和生产环境创建不同的配置。

我的Spring Data Solr教程的下一部分描述了如何向Solr索引添加新文档,如何更新现有文档的信息以及从Solr索引删除文档。

PS。 Github上提供了此博客条目的示例应用程序。

参考: Spring Data Solr教程: Petri Kainulainen博客上的JCG合作伙伴 Petri Kainulainen进行的配置 。

翻译自: https://www.javacodegeeks.com/2013/05/spring-data-solr-tutorial-configuration.html

Spring Data Solr教程:配置相关推荐

  1. Spring Data Solr教程:将自定义方法添加到单个存储库

    我的Spring Data Solr教程的前一部分教我们如何使用查询方法创建静态查询. 自然而然的下一步将是描述如何使用Spring Data Solr创建动态查询. 但是,在继续讨论该主题之前,我们 ...

  2. Spring Data Solr教程:查询方法

    我们已经了解了如何配置Spring Data Solr. 我们还学习了如何向Solr索引添加新文档,如何更新现有文档的信息以及从Solr索引删除文档. 现在是时候继续前进,学习如何使用Spring D ...

  3. Spring Data Solr教程:动态查询

    Solr通常被称为搜索服务器,我们可以在实现全文搜索功能时使用它. 但是,当我们实现从搜索表单获取其输入的搜索功能时,利用Solr的性能通常是明智的. 在这种情况下,执行的搜索查询取决于收到的输入. ...

  4. Spring Data Solr教程:向所有存储库添加自定义方法

    如果我们在现实生活中的软件项目中使用Spring Data Solr,很可能我们迟早会遇到一个要求,该要求指出我们的应用程序必须能够与本地Solr服务器和SolrCloud进行通信 . 目前,满足此要 ...

  5. Spring Data Solr教程:排序

    当我们实现单词搜索功能时,我们通常希望通过使用每个搜索结果的相关性以降序对搜索结果进行排序. 这也是Solr的默认行为. 但是,在某些情况下,有必要手动指定排序顺序. 一种此类情况是"常规& ...

  6. Spring Data Solr教程:分页

    在我的Spring Data Solr教程的较早部分中,我们实现了一个简单的搜索功能,该功能用于搜索待办事项的信息. 我们搜索功能的当前实现将所有搜索结果显示在一个页面中. 对于大多数现实生活中的应用 ...

  7. Spring Data Solr教程:Solr简介

    大多数应用程序必须具有某种搜索功能. 问题在于搜索功能通常是巨大的资源消耗,它们可能通过给数据库造成沉重的负担而破坏我们应用程序的性能. 因此,将负载转移到外部搜索服务器是个好主意. 这是我的Spri ...

  8. Spring Data Solr教程:CRUD(差不多)

    在我的Spring Data Solr教程的上一部分中,我们学习了如何配置Spring Data Solr. 现在该迈出一步,了解我们如何管理Solr实例中存储的信息. 此博客文章描述了我们如何向So ...

  9. solr crud_Spring Data Solr教程:CRUD(差不多)

    solr crud 在我的Spring Data Solr教程的上一部分中,我们学习了如何配置Spring Data Solr. 现在该迈出一步,了解我们如何管理Solr实例中存储的信息. 此博客文章 ...

最新文章

  1. Node.js实现服务器端生成Excel文件(xls格式、xlsx格式文件)并弹出下载文件
  2. nginx的读写分离
  3. 服务器系统ghost版 raid,服务器在raid5下做系统ghost备份.docx
  4. 《C++面向对象高效编程(第2版)》——3.13 采用语义
  5. python中文解释-python是解释型语言么
  6. 数据库基础操作(二)数据库表数据的增删查改
  7. mysql索引失效_导致MySQL索引失效的几种常见写法
  8. html获取xml分页,JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
  9. 8.1个Windows 8.1的不足之处及其解决方法
  10. mysql 批量删除_Python接口测试之对MySQL的增、删、改、查操作(五)
  11. mysql 导出bson格式_mongodb 导入导出GridFS【图片/文件/视频/音频等多媒体文件的导入导出】...
  12. 无法为类型 CuteEditor.Editor 授予有效的许可证。
  13. SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
  14. Mac电脑上怎么添加密码提示?操作教程来啦!
  15. Linux中级之ansible概念及hoc命令行调用模式
  16. 【算法随记四】自动色阶、对比度、直方图均衡等算法的一些小改进。
  17. dll导出类比较好的方式
  18. python怎么读单词和古文_Python 实现文言文词频统计
  19. 使用Diskgenius将U盘分区,分为启动盘和文件存储两大功能详解
  20. php富文本防注入_HTML Purifier,PHP中过滤富文本防止XSS攻击

热门文章

  1. php中对象的遍历输出,PHP中的对象遍历技巧
  2. wordcloud python3.7_[原创]win7/64位系统+python3.7.2下安装wordcloud库失败之解决——一个莫名其妙的方法...
  3. Spring中@Autowired、@Qualifier、@Resource的区别
  4. 转-SpringBoot——使用外置的Tomcat服务器
  5. 多个会话对表加表级读锁和表级写锁后的操作权限分析(表级读锁+表级写锁)
  6. nginx-配置基于ip或域名的虚拟主机
  7. 近似装箱问题(两种脱机算法实现)
  8. java反射机制+继承设计技巧
  9. GET与POST传递数据的最大长度能够达到多少
  10. go比java快多少_Java 11快多少?