package com.easy.custom.handler;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.List;
/**
* Created by qindongliang on 2016/5/11.
*/
public class MyHandler extends RequestHandlerBase {
final static Logger log= LoggerFactory.getLogger(MyHandler.class);
//统计指标,请求次数
volatile long numRequests;
//统计指标,总耗时
volatile long totalTime;
//统计指标,总请求出错次数
volatile long numErrors;
//从solrconfig.xml里面传过来的参数
List<String> words;
@Override
public void init(NamedList args) {
words=((NamedList)args.get("words")).getAll("word");
if(words.isEmpty()){
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,"至少有一个参数");
}
super.init(args);
}
@Override
public void handleRequestBody(SolrQueryRequest solrQueryRequest, SolrQueryResponse solrQueryResponse) throws Exception {
numRequests++;
long startTime=System.currentTimeMillis();
try{
HashMap<String,Integer> counts=new HashMap<String, Integer>();
SolrParams params=solrQueryRequest.getParams();
String q=params.get(CommonParams.Q);//从url中得到q参数
for(String text:q.split(" ")){
if(words.contains(text)){
Integer ct=counts.containsKey(text)?counts.get(text):0;
counts.put(text,ct+1);
}else{
log.warn("过滤掉此单词:{}",text);
}
}
NamedList<Integer> re=new NamedList<Integer>();
for(String word:words){
re.add(word,counts.get(word));
}
solrQueryResponse.add("results",re);
}catch (Exception e){
numErrors++;
log.error("统计出错: ",e.getMessage());
}finally {
totalTime+=System.currentTimeMillis()-startTime;
}
}
@Override
public String getDescription() {
return "三劫散仙";
}
@Override
public String getVersion() {
return "1.0";
}
@Override
public String getSource() {
return "http://qindongliang.iteye.com/";
}
@Override
public NamedList<Object> getStatistics() {
NamedList all=new SimpleOrderedMap();
all.add("requests count",numRequests);
all.add("errors count",numErrors);
all.add("totalTimes(ms)",totalTime);
return all;
}
}
solr自定义评分组件demo.zip
需积分: 3 108 浏览量
2023-11-02
22:17:32
上传
评论
收藏 10KB ZIP 举报
唐先生的博客
- 粉丝: 2272
- 资源: 531
最新资源
- 沈丘盛世龙门图纸符合规范化
- HM3400-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 基于python+streamlit联邦学习进行高校学生成绩预测研究python源码+项目说明+模型+数据.zip
- HM3400D-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM3400B-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- spring-boot示例
- 搜集火星资源.py
- JAR应用启动停止脚本化解决方案.zip
- 配合eclipse svn插件subclipse-4.3.4版本的javahl
- Bash脚本教程:如何优雅地停止JAR服务.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈