欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-14 10:15:40
apache solr是一个搜索引擎。spring boot为solr客户端库及spring data solr提供的基于solr客户端库的抽象提供了基本的配置。sprin...

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文件):

<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-data-solr</artifactid>
</dependency>

可以像其他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;
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服务,具体代码如下:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。