Apache Solr是一个搜索引擎。Spring Boot为solr客户端库及Spring Data Solr提供的基于solr客户端库的抽象提供了基本的配置。Spring Boot提供了一个用于聚集依赖的spring-boot-starter-data-solr 'Starter POM'。
引入spring-boot-starter-data-solr依赖,在pom.xml配置文件中增加如下内容(基于之前章节“Spring Boot 构建框架”中的pom.xml文件):
1
2
3
4
|
< dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-data-solr</ artifactId > </ dependency > |
可以像其他Spring beans一样注入一个自动配置的SolrServer实例。默认情况下,该实例将尝试使用localhost:8983/solr连接一个服务器。
1
2
3
4
5
6
7
8
9
|
@Component public class MyBean { private SolrServer solr; @Autowired public MyBean(SolrServer solr) { this .solr = solr; } // ... } |
如果添加一个自己的SolrServer类型的@Bean,它将会替换默认的。
应用集成Solr搜索客户端案例
Spring Boot的配置是集中性的(可以拆分成不同的配置文件),因此在application.properties文件中添加以下配置:
1
2
3
4
|
# SOLR (SolrProperties) spring.data.solr.host=http://localhost:8983/solr #spring.data.solr.zkHost= spring.data.solr.repositories.enabled=true |
使用Spring-data-solr类似spring-data-jpa,配置@bean接受zk服务器相关属性(自定义的配置方式,可以直接使用默认方式)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties (prefix= "spring.solr" ) public class SolrConfig { private String host; private String zkHost; private String defaultCollection; public String getDefaultCollection() { return defaultCollection; } public void setDefaultCollection(String defaultCollection) { this .defaultCollection = defaultCollection; } public String getHost() { return host; } public void setHost(String host) { this .host = host; } public String getZkHost() { return zkHost; } public void setZkHost(String zkHost) { this .zkHost = zkHost; } |
配置SolrServer服务,具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
@Configuration @EnableConfigurationProperties (SolrConfig. class ) public class SolrClientConfig { @Autowired private SolrConfig solrConfig; private CloudSolrServer solrServer; @PreDestroy public void close() { if ( this .solrServer != null ) { try { this .solrServer.close(); } catch (IOException e) { e.printStackTrace(); } } } @Bean public CloudSolrServer SolrServer(){ if (StringUtils.hasText( this .solrConfig.getZkHost())) { solrServer = new CloudSolrServer( this .solrConfig.getZkHost()); solrServer.setDefaultCollection( this .solrConfig.getDefaultCollection()); } return this .solrServer; } } |
测试solr查询,具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
@RestController public class HelloController { @Autowired private CloudSolrServer solrserver; public String hello(){ return "say hello" ; } @RequestMapping ( "test" ) public void test(){ ModifiableSolrParams params = new ModifiableSolrParams(); params.add( "q" , "demo:素文宅博客" ); params.add( "ws" , "json" ); params.add( "start" , "0" ); params.add( "rows" , "10" ); QueryResponse response = null ; try { response=solrserver.query(params); SolrDocumentList results = response.getResults(); for (SolrDocument document : results) { System.out.println( document.getFieldValue( "demo" )); System.out.println(document.getFieldValue( "id" )); } } catch (Exception e){ e.getStackTrace(); } System.out.println(response.toString()); } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.yoodb.com/yoodb/article/detail/1423