搜索引擎之阿堂Solr学习笔记系列6(进阶篇:更新索引查询策略)

时间:2021-12-02 23:33:46

上篇文章中,阿堂主要和大家分享了关于solr的一个非常重要的文件schema.xml中一些字段和属性的介绍,相当于是对阿堂实战demo的一些基础知识的补充。

    本篇文章阿堂是介绍的另一个内容。它的具体场景是这样的:比如说,当我们用作索引、分词、查询的数据库表的字段内容有更新,或者新增记录时,solr对应的索引文件是不会自动更新的,因为solr根本不知道我们已经将用用索引的数据库内容进行了更新操作,所以需要我们来告诉solr我们的更新变动。这里我们需要使用如下url访问来自动激活solr的索引文件的更新。

     主要是使用的 http://IP:port/solr/dataimport?command=delta-import 这个url访问,当然在实际项目中需要我们采用一定的策略来处理。比如说使用定时器程序每隔几分钟来进行访问,具体隔多少分钟比较合适要看实际业务的情况,比如说电商平台的查询,我们可能会设置的更新频率要比较短一点,其它一些查询不频繁的平台,我们可以设置更新的频率时间要长一点。当然,如果设置的更新频率短的话,这对sorl服务器的性能也会提出不小的挑战,需要我们考虑对solr作分布式集群,一般是用solrCloud+zookeeper来架构,这个阿堂会在最后的高级篇文章再来分享,这里暂时只提一下。


搜索引擎之阿堂Solr学习笔记系列6(进阶篇:更新索引查询策略)

搜索引擎之阿堂Solr学习笔记系列6(进阶篇:更新索引查询策略)

搜索引擎之阿堂Solr学习笔记系列6(进阶篇:更新索引查询策略)

搜索引擎之阿堂Solr学习笔记系列6(进阶篇:更新索引查询策略)

搜索引擎之阿堂Solr学习笔记系列6(进阶篇:更新索引查询策略)


阿堂使用的测试代码如下

public class SolrjUpdate {

   
    publicstatic void main(String[] args) {
      
      
       Stringperson ="http://localhost:9999/solr/dataimport?command=delta-import&clean=true&commit=true";
      //构造HttpClient的实例
       HttpClienthttpClient = new HttpClient();
       //创建GET方法的实例  
       GetMethodgetMethod = new GetMethod(person);
      //使用系统提供的默认的恢复策略   
      getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,newDefaultHttpMethodRetryHandler());
       try {
         
         //执行getMethod   
          intstatusCode = httpClient.executeMethod(getMethod);
         System.out.println("HttpStatus.SC_OK = "+HttpStatus.SC_OK);
          if(statusCode != HttpStatus.SC_OK) {
               
               System.err.println("Method failed: "+getMethod.getStatusLine());
               
          }
         
          //读取内容  
          byte[]responseBody = getMethod.getResponseBody();
          //处理内容  
         System.out.println("返回内容 = "+new String(responseBody));
      
       } catch(HttpException e) {
         
      //发生致命的异常,可能是协议不对或者返回的内容有问题   
      System.out.println("Please check your provided httpaddress!");