设为首页 收藏本站
查看: 1919|回复: 0

[经验分享] solr中plugin的扩展

[复制链接]

尚未签到

发表于 2016-12-15 07:37:09 | 显示全部楼层 |阅读模式
  1.    将solr 源文件解压,并且使用开发工具,如:Eclipse 。新建工程,并将源文件以及相关的jar 导入。
  2.    在org.apache.solr.handler 包下(一般在此包下进行扩展),新建java 类。
  3.    新建的类需要继承RequestHandlerBase 类,并且实现其中的handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) 方法。同时需要覆盖 getVersion() 、 getDescription() 、 getSourceId() 、 getSource() 、 getDocs() 等方法 。
  4.    handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) 方法中,req 表示传入的参数对象,rsp 表示经过处理后得到的需要显示的对象,
  5.    业务处理根据个人的需要进行编写。
  6.    在solr 中,常量一般在org.apache.solr.common.params 包下的接口CommonParams 中定义。在本项目中,需要在CommonParams 中添加新的常量,如:
  public static final String URI = "uri";//URI 的值表示访问的参数。
  7.    以上工作实现后,对solr 重新打包。然后加入到Web 项目目录\WEB-INF\lib 中。
  8.    打开solr 文件夹(对应resin 文件夹下的solr 文件夹),打开conf 文件夹下的solrconfig.xml 文件,在<config> ……</config> 标签中,添加如下内容:
  <requestHandler name="/urlinfo" class="solr.URItoWordsHandler">
  </requestHandler>
  其中name 属性决定了访问的路径,class 属性决定了处理类。
  9.    打开IE 浏览器,输入“http://localhost:8081/index/urlinfo?url= ?wt= ?”,其中“localhost:8081/index/ ”表示该WEB 应用程序的访问地址,“urlinfo ”对应第8 条中的<requestHandler> 标签中的name 属性的值。url 对应传入的查询网页地址(对应第6 条中添加的常量的值(uri ))。wt 表示要输出的格式,值一般为:xml 和json ,表示输出的格式为xml 格式或者json 格式。
  10. 以下通过一个例子具体说明:
  a. 在合适的包下编写所需要的java 类,本例中类名为 URItoWordsHandler ,该类继承 RequestHandlerBase 类。

/**
* 导入所需要的包
*/
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

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.request.SolrQueryRequest;
import org.apache.solr.request.SolrQueryResponse;

/**
public class URItoWordsHandler extends RequestHandlerBase {
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp)
throws Exception {
/**
* 获取传递的参数集合,并且进行相应的业务处理
*/
SolrParams params = req.getParams();

/**
* 从参数集合中得到想要的参数
*/
String uri = params.get(CommonParams. URI );
/**
* 以下进行合适的业务处理,具体处理过程省略
*/

…………

/**
* 将业务处理结果添加到 rsp ,并且输出
*/
rsp.add( "result" , result);
}

///////////// SolrInfoMBeans methods ////////////////
///////////////// 以下覆写父类的方法 ///////////////////
@Override
public String getVersion() {
return "$Revision: 561904 $" ;
}

@Override
public String getDescription() {
return "Solr MoreLikeThis" ;
}

@Override
public String getSourceId() {
return "$Id: MoreLikeThisHandler.java 561904 2007-08-01 18:43:02Z ryan $" ;
}

@Override
public String getSource() {
return "$URL: http://svn.apache.org/repos/asf/lucene/solr/trunk/src/java/org/apache/solr/handler/MoreLikeThisHandler.java $" ;
}

@Override
public URL[] getDocs() {
try {
return new URL[] { new URL(
"http://wiki.apache.org/solr/MoreLikeThis" ) };
} catch (MalformedURLException ex) {
return null ;
}
}
}
  b. 在solrconfig.xml 中<config> 标签下添加相应的配置信息:

   <!--   zhouwendong 2009-1-7   START!!! 注释,便于后期修改  -->
<requestHandler name="/urlinfo" class="solr.URItoWordsHandler">
<!--  /urlinfo 表示访问路径  class 表示对应的处理类  -->
<!--  以下为其他说明,可根据需要修改或删除  -->
<lst name=" 其他说明">
<int name=" 名称"> 参数</int>
</lst>
</requestHandler>
<!--   zhouwendong 2009-1-7   END!!!   -->

  c. 启动服务器,在浏览器中输入地址http://localhost:8080查看结果。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314355-1-1.html 上篇帖子: 二十五、solr与tomcat的整合 下篇帖子: solr 创建,删除,更新索引
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表