• solr 自定义 RequestHandler


    RequestHandler的作用:如果是业务查询之前相对查询条件处理,可以继承RequestHandlerBase ,如果想在提交时处理更新索引的业务可以继承比如修改索引字段值,这时可以继承UpdateRequestHandlers;如果想对查询结果返回前想处理业务,可以继承SearchComponent;这里只对前者做讲解↓

    (1)新建一个项目:这里已springboot项目为例,引入以下solr包

    <dependency>
       <groupId>org.apache.solr</groupId>
       <artifactId>solr-core</artifactId>
       <version>7.7.1</version>
    </dependency>

    (2)新建自定义 RequestHandler :

    package com.liuzj.solr.handlers;
    
    import org.apache.solr.handler.RequestHandlerBase;
    import org.apache.solr.request.SolrQueryRequest;
    import org.apache.solr.response.SolrQueryResponse;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * 自定义 RequestHandler
     *
     * @author liuzj
     * @date 2019-03-25
     */
    public class MyRequestHandlerSelect extends RequestHandlerBase {
        @Override
        public void handleRequestBody(SolrQueryRequest solrQueryRequest, SolrQueryResponse solrQueryResponse) throws Exception {
            // 获取查询参数(在 solr-console log中可以看到)
            System.out.println(solrQueryRequest.getParams().get("q"));
            // 设置返回体
            Map<String,Object> result = new HashMap<>();
            result.put("name","Tom");
            result.put("label","Jack");
            solrQueryResponse.addResponse(result);
        }
    
        @Override
        public String getDescription() {
            return null;
        }
    }

    (3)将项目打成jar包放置 solr -> webapp -> WEB-INF -> lib 目录下;eg:D:Solrsolr-7.7.1serversolr-webappwebappWEB-INFlib;当然也可以修改 solrconfig.xml 文件指定jar的具体位置,如下↓

    (4)配置对应core的solrconfig.xml配置文件,添加自定义 RequestHandler配置:

    <requestHandler name="/mySelect" class="com.liuzj.solr.handlers.MyRequestHandlerSelect">
        <lst name="defaults">
          <str name="echoParams">explicit</str>
          <str name="wt">json</str>
          <str name="indent">true</str>
          <int name="rows">10</int>  
          <str name="df">usergoods_mix</str>  
        </lst>
      </requestHandler>

    (5)重启solr -> 测试↓

  • 相关阅读:
    谈谈架构层级的“开闭原则”
    将MySQL数据库中的表结构导入excel 或word
    淘宝网-软件质量属性分析
    架构漫谈阅读有感
    机器学习-分类算法之决策树、随机森林
    机器学习-分类算法之逻辑回归
    机器学习-朴素贝叶斯算法
    机器学习-分类算法之k-近邻
    机器学习-模型选择
    机器学习-scikit-learn数据集
  • 原文地址:https://www.cnblogs.com/lzj123/p/10594689.html
Copyright © 2020-2023  润新知