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:\Solr\solr-7.7.1\server\solr-webapp\webapp\WEB-INF\lib;当然也可以修改 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 -> 测试↓

转载于:https://www.cnblogs.com/lzj123/p/10594689.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值