博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
solr dataimport 数据导入源码分析(一)
阅读量:5010 次
发布时间:2019-06-12

本文共 2560 字,大约阅读时间需要 8 分钟。

solr处理请求的接口为SolrRequestHandler.java ,由handleRequest方法处理来自http的请求

/**
*********************************************************************
 * Module:  SolrRequestHandler.java
 * Author:  Administrator
 * Purpose: Defines the Interface SolrRequestHandler
 **********************************************************************
*/
import java.util.*;
/**
 @pdOid 92641501-9fac-4850-bf72-43e262d42eff 
*/
public 
interface SolrRequestHandler {
   
/**
 
@param
 args
    * @pdOid 0d916c92-cb61-408c-844d-a756cc1e9a41 
*/
   
void init(NamedList args);
   
/**
 
@param
 req 
    * 
@param
 rsp
    * @pdOid 35c91800-4167-49d1-aefe-c961fb7082d1 
*/
   
void handleRequest(SolrQueryRequest req, SolrQueryResponse rsp);

公用的实现类为RequestHandlerBase.java

 /***********************************************************************

 * Module:  RequestHandlerBase.java
 * Author:  Administrator
 * Purpose: Defines the Class RequestHandlerBase
 **********************************************************************
*/
import java.util.*;
/**
 @pdOid 9e2891cc-6977-4d7e-86f8-d406a3493599 
*/
public 
abstract 
class RequestHandlerBase 
implements SolrRequestHandler {
   
/**
 
@param
 args
    * @pdOid 48f0c55d-b3a3-4736-8e47-1c866398eeef 
*/
   
public 
void init(NamedList args) {
       
     }
   
   
/**
 
@param
 req 
    * 
@param
 rsp
    * 
@exception
 Exception
    * @pdOid 3eec0a97-ed48-4f4e-b78b-142247478b69 
*/
   
public 
abstract 
void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) 
throws Exception;
   
/**
 
@param
 req 
    * 
@param
 rsp
    * @pdOid 7b97a1ac-509c-4a03-aaed-a2bbd320dbcc 
*/
   
public 
void handleRequest(SolrQueryRequest req, SolrQueryResponse rsp) {
     
   }
}

这是一个抽象类,其中抽象方法handleRequestBody 由子类实现,真正的处理逻辑在子类的handleRequestBody方法

 由handleRequest调用子类的  handleRequestBody方法,这是一种典型的模板方法设计模式

负责数据导入的实现类为DataImportHandler.java,示例代码如下 

 /***********************************************************************

 * Module:  DataImportHandler.java
 * Author:  Administrator
 * Purpose: Defines the Class DataImportHandler
 **********************************************************************
*/
import java.util.*;
/**
 @pdOid 1277dd7d-601d-45c7-a2ef-1836f46db6f3 
*/
public 
class DataImportHandler 
extends RequestHandlerBase {
   
/**
 @pdOid 6e53bcab-98f0-4ce1-97a0-1c15e9be51ac 
*/
   
private DataImporter importer;
   
   
/**
 
@param
 req 
    * 
@param
 rsp
    * 
@exception
 Exception
    * @pdOid 15ebeea5-1faf-4d9d-89bb-3c4be63bf15a 
*/
   
public 
void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) 
throws Exception {
     importer.runCmd(requestParams, sw);
   
   }
}

DataImportHandler类持有DataImporter的引用,调用DataImporter类的相关方法实现进一步的处理

简要类图如下

 

转载于:https://www.cnblogs.com/chenying99/archive/2012/09/09/2677678.html

你可能感兴趣的文章
掷骰子
查看>>
sqlmap详解
查看>>
2016年7月笔记
查看>>
开源手机自动化测试框架iQuery入门教程(三)
查看>>
利用php Jpgraph绘制柱形图
查看>>
[转载]C-Style Character Strings
查看>>
05.UIDynamic
查看>>
php正确率比较高的安装教程
查看>>
常见26个jquery使用技巧详解(比如禁止右键点击、隐藏文本框文字等)
查看>>
基于ARM+LINUX的无线视频采集系统设计----------项目整体介绍
查看>>
python log
查看>>
迭代器,递归,函数名的使用,闭包
查看>>
DOM结构学习备忘
查看>>
关于idea优化的博客(分享)
查看>>
BZOJ1015[JSOI2008]星球大战starwar[并查集]
查看>>
BZOJ 1415: [Noi2005]聪聪和可可 [DP 概率]
查看>>
信息资源管理第一章知识结构
查看>>
LeetCode Bitwise AND of Numbers Range
查看>>
python 的with用途(清理资源和异常处理,同时代码精简)
查看>>
dns server 域名解析总结
查看>>