`

solr中plugin的扩展

阅读更多

 

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查看结果。

0
0
分享到:
评论
2 楼 zhouwendong006 2009-03-27  
chenlb 写道

你完全可以写一个 Param 的子类, 而不是修改CommonParams,

受教!
1 楼 chenlb 2009-03-26  
你完全可以写一个 Param 的子类, 而不是修改CommonParams,

相关推荐

    pentaho-solr-plugin:使用 SOLR 原生 API 将数据发送到 SOLR 的 ETL 插件。 从 https 分叉

    在 pentaho-solr-plugin-master 压缩包中,可能包含以下内容: - **源代码**:Java 代码实现,用于构建和理解插件的工作原理。 - **文档**:可能包含使用指南、API 文档或者开发者指南,帮助用户和开发者快速上手。 ...

    solr4.9开发所需jar包

    Solr4.9是Apache Solr的一个版本,它是一个基于Lucene的全文搜索服务器,用于构建高效的、可扩展的搜索应用。在这个版本中,Solr提供了丰富的查询功能、高效的索引和搜索性能,以及灵活的数据处理能力。"solr4.9开发...

    Solr-Plugins:Solr 的各种插件

    Solr的灵活性和可扩展性得益于其插件系统,使得用户可以根据需求自定义功能。下面我们将深入探讨Solr的各种插件及其在实际应用中的作用。 1. **查询解析器插件**: 查询解析器是Solr处理用户输入查询的关键组件。...

    solr-8.5.2.zip

    这通常通过 Solr's Security Plugin 实现,它提供了基于角色的访问控制(RBAC),允许管理员设置不同的权限级别,确保只有授权的用户可以访问和操作 Solr。 5. **配置文件详解**:在压缩包中的 "solr-8.5.2" 文件夹...

    solr开发维护参考

    11. **安全与权限控制**:Solr可以通过Solr Security Plugin实现用户认证和授权,保护索引数据的安全。 12. **插件扩展**:Solr的灵活性体现在其强大的插件体系,开发者可以根据需求编写自定义查询解析器、请求...

    solr4.6.0 源代码

    `solr-plugin-init.xml`用于初始化插件,`PluginInfo`类描述了插件的信息。 9. **请求处理**: `RequestHandlers`处理来自客户端的请求,如搜索请求、更新请求等。`org.apache.solr.handler`包下有多种预定义的...

    nodebb-plugin-solr:使用Apache Solr全文搜索NodeBB

    此插件扩展了NodeBB的功能,以利用Apache Solr的安装作为搜索后端。 配置 通过npm安装此插件: npm install nodebb-plugin-solr 在“插件”页面中激活它 重新启动NodeBB 检查插件是否已成功连接到搜索引擎。 如果...

    最新版linux solr-8.10.0.tgz

    9. **安全性**:Solr 8.10.0可能包含了安全相关的配置和插件,如Solr Security Plugin,用于实现身份验证和授权。 10. **监控和管理**:Solr提供了直观的Web界面(Solr Admin UI),用户可以在这里查看统计信息、...

    solr-8.3.0.tgz

    Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,主要用来构建高效、可扩展的全文搜索引擎。它基于Java开发,可以处理大量数据,提供高速搜索功能,并且支持多语言,是企业级信息检索服务的重要选择。...

    最新版windows solr-8.5.1.zip

    9. **安全与权限**:Solr 8.5.1引入了Solr Security Plugin,用于实现身份验证和授权,保护Solr实例的安全。 10. **社区与资源**:Apache Solr拥有活跃的社区,用户可以在官方论坛、邮件列表和Stack Overflow上寻求...

    hanlp-lucene-plugin, HanLP中文分词Lucene插件,支持包括Solr在内的基于Lucene的系统.zip

    汉纳拼音Lucene插件(hanlp-lucene-plugin)是一个专为中文处理设计的扩展工具,它将著名的HanLP中文分词库与流行的全文检索框架Lucene进行了集成,旨在提升在Lucene及其衍生产品(如Solr)中的中文处理能力。...

    solr使用指南1

    solrconfig.xml 文件中配置了 Solr 的一些基本信息,例如 Plugin 的配置、Request Handler 的配置等。schema.xml 文件中配置了 Solr 的字段信息,例如字段的名称、类型、索引信息等。 在 Solr 中,核心的概念是索引...

    solr-dataimporthandler-extras-4.3.0.zip

    在4.3.0版本中,DIH的“extras”部分可能包含了扩展和增强功能,比如支持更多的数据源类型、定制化的数据处理器或者增强的性能优化。这些额外组件对于那些需要处理大量结构化数据并希望将其快速高效地索引到Solr的...

    elasticsearch的hanlp中文插件

    4. **安装插件**:将生成的JAR文件通过Elasticsearch的`bin/plugin`命令安装到ES实例中。 5. **配置设置**:在Elasticsearch的配置文件`elasticsearch.yml`中,添加关于HanLP插件的相关配置,例如设置分词器的类型...

    hanlp jar 包

    在标题提到的`hanlp jar 包`中,包含了`hanlp-portable-1.3.2.jar`和`hanlp-solr-plugin-1.1.2.jar`以及其源码版本`hanlp-solr-plugin-1.1.2-sources.jar`,这些文件将帮助开发者在Java环境下高效地进行中文文本的...

    ir-generalized-translation-models:Lucene&Solr中实现的概率相关性框架中的广义翻译模型

    信息检索-泛化翻译模型该存储库包含本文的Lucene&Solr实现: 概率相关框架中的通用翻译模型Rekabsaz,Lupu,Hanbury,Zuccon-CIKM '16( )执行该存储库允许使用Solr解析器和Lucene查询扩展Lucene&Solr。...

    Solr-ctf-query-parser:使用Clickstream数据重新排名和扩展Solr查询返回

    使用过滤后的点击流数据重新排序和扩展Solr查询返回值,从而提供一个简单,灵活的协作过滤框架。 Clickthroughfilter-xxxjar将过滤器作为Solr / Lucene的查询解析器插件运行。 过滤器(来自单独的clicks核心)对...

    hanlp jar ,最近搞分词技术把不同版本的jar 提供给大家

    首先,`hanlp-solr-plugin-1.1.2.jar` 是HanLP与Solr集成的插件,Solr是一个流行的开源搜索引擎,这个插件使得HanLP的分词能力可以无缝集成到Solr中,从而提升搜索的精准度。开发者可以通过这个插件,在Solr中实现对...

    typo3-find:TYPO3扩展提供Solr索引的前端

    该扩展中包含标准显示功能的部分内容以及一些有助于创建这些模板的View Helper。安装为了开发此扩展,请克隆该存储库,并使用composer install通过composer安装依赖项。目的这些扩展旨在提供: 访问TYPO3中的任意...

    HanLP相关jar包与配置文件

    Solr是一个流行的开源搜索平台,通过这个插件,开发者可以在Solr中直接使用HanLP的自然语言处理功能,如在索引构建或查询过程中进行中文分词,提高检索效果。对于需要构建中文搜索引擎的项目,这个插件尤其重要。 4...

Global site tag (gtag.js) - Google Analytics