springboot整合solr的方法详解

  

这一篇写一下springboot整合solr,代码已经上传到github,传送门。

  

<强> 1,新建核心并配置模式
  

  

solr创建- c“book_core”,配置分词器并且领域类型定义为分词器类型。

        & lt; fieldType name=癷k_word”class=皊olr.TextField”比;   & lt;分析仪类型=爸甘北?   & lt;记号赋予器类=" org.wltea.analyzer.lucene。IKTokenizerFactory " useSmart=" false "相依=" ik.conf”/比;   & lt;过滤器类=" solr.LowerCaseFilterFactory "/比;   & lt;/analyzer>   & lt;分析仪类型=安檠北?   & lt;记号赋予器类=" org.wltea.analyzer.lucene。IKTokenizerFactory”useSmart=" true "相依=" ik.conf”/比;   & lt;过滤器类=" solr.LowerCaseFilterFactory "/比;   & lt;/analyzer>   & lt;/fieldType>      & lt; !——自定义添加了——比;   & lt;字段名="描述" type=" ik_word "索引=" true "=" true "/存储在      

配置完毕后启动solr。

  

<强> 2,相关配置
  

  maven

配置         & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-data-solr   & lt;/dependency>      

配置application.properties相关solr的内容

        # solr配置   spring.data.solr.host=http://localhost: 8983/solr/book_core      

如果想同时使用好几个核心,通过HttpSolrClient solrClient=new HttpSolrClient (url);构造出对应的核心solrClient进行相关操作。
  

  

<强> 3,solr增删改查

  

3.1,新增实体

        @SolrDocument (solrCoreName=癰ook_core”)   公开课书{      @ id   @Field   私人字符串id;      @Field   私人字符串描述;      公共字符串getId () {   返回id;   }      公共空间setId (String id) {   这一点。id=id;   }      公共字符串getDescription () {   返回描述;   }      公共空间setDescription(字符串描述){   this.description=描述;   }   }      

在这里要说明一下实体类上的注解@field和@SolrDocument是为了QueryResponse.getBeans()能转化成相关实体类,不然无法识别。

  

3.2增删改

        @ autowired   SolrClient SolrClient;      @Override   公共空间添加(本书){   SolrInputDocument文档=new SolrInputDocument ();   document.setField (“id”, book.getId ());   document.setField(“描述”,book.getDescription ());   尝试{   solrClient.add(文档);   solrClient.commit ();   }捕捉(SolrServerException e) {   e.printStackTrace ();   }捕捉(IOException e) {   e.printStackTrace ();   }   }      @Override   公共空间删除(字符串查询){   尝试{   solrClient.deleteByQuery(查询);   solrClient.commit ();   }捕捉(SolrServerException e) {   e.printStackTrace ();   }捕捉(IOException e) {   e.printStackTrace ();   }   }      @Override   公共图书更新(本书){   尝试{   solrClient.addBean(书);   solrClient.commit ();   }捕捉(IOException e) {   e.printStackTrace ();   }捕捉(SolrServerException e) {   e.printStackTrace ();   }   返回的书;   }      

增加删除修改都差不多,增加和修改可以通过添加(SolrInputDocument)和addBean,根据主键是否存在来判断是新增还是修改,删除可以通过主键或者条件进行删除。增删改之后一定要记得承诺!

  

主键是在模式中配置的,默认有id字段做主键,也可以自定义主键,在模式中配置。

  

通过添加方法加了几个演示后,可以在solr管理页面的查询出查看添加的内容

  

 springboot整合solr的方法详解

  

3.3查询   

查询则通过SolrQuery入参进行查询

        @Override   公共ListqueryAll () {   List书目=new ArrayList ();   SolrQuery SolrQuery=new SolrQuery ();   solrQuery.setQuery (“*: *”);   尝试{   QueryResponse QueryResponse=solrClient.query (solrQuery);   如果(queryResponse !=null) {   书目=queryResponse.getBeans (Book.class);   }   }捕捉(SolrServerException e) {   e.printStackTrace ();   }捕捉(IOException e) {   e.printStackTrace ();   }   返回书目;

springboot整合solr的方法详解