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