Spring Boot集成Sorl搜索客户端的实现代码

网友投稿 296 2023-03-21


Spring Boot集成Sorl搜索客户端的实现代码

Apache Solr是一个搜索引擎。Spring Boot为solr客户端库及Spring Data Solr提供的基于solr客户端库的抽象提供了基本的配置。Spring Boot提供了一个用于聚集依赖的spring-boot-starter-data-solr 'Starter POM'。

引入spring-boot-sthttp://arter-data-solr依赖,在pom.xml配置文件中增加如下内容(基于之前章节“Spring Boot 构建框架”中的pom.xml文件):

org.springframework.boot

spring-boot-starter-data-solr

可以像其他Spring beans一样注入一个自动配置的SolrServer实例。默认情况下,该实例将尝试使用localhost:8983/solr连接一个服务器。

@Component

public class MyBean {

private SolrServer solr;

@Autowired

public MyBean(SolrServer solr) {

this.solr = solr;

}

// ...

}

如果添加一个自己的SolrServer类型的@Bean,它将会替换默认的。

应用集成Solr搜索客户端案例

Spring Boot的配置是集中性的(可以拆分成不同的配置文件),因此在application.properties文件中添加以下配置:

# 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服务器相关属性(自定义的配置方式,可以直接使用默认方式)

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix="spring.solr")

public class SolrConfig {

private String host;

private String zkHost;

priPkOGzeFvate String defaultCollection;

public String getDefaultCollection() {

return defaultCollection;

}

public void shttp://etDefaultCollection(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服务,具体代码如下:

@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查询,具体代码如下:

@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());

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:c接口开发实例(c语言实现接口)
下一篇:Java中Switch用法代码示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~