您的位置:首页 > 产品设计 > UI/UE

4.跟我学solr---SolrRequestHandler详解

2014-05-04 09:53 344 查看

概述

我们在使用solr admin在做查询的时候,可以看到Request-Hander(qt)输入栏中有“/select”这样一个uri,当我们点击查询的时候所发起的请求是这样的,http://localhost:8080/solr/collection1/select?q=feature&wt=json&indent=true&_=1399167234058,我们可以看到"/select"被自动地加到请求的url里面。那么solr服务在接受到这个请求的时候,就会根据"/select"这段uri来选择对应的RequestHandler。



那“/select”这个RequestHandler到底配置在哪里呢?我们打开我们之前所配置的SOLR_HOME目录,在SORL_HOME\collection1\conf\目录下的solrconfig.xml文件中,我们找到如下配置,这个就是“/select”所对对应的RequestHandler了。

<requestHandler name="/select" class="solr.SearchHandler">
<!-- default values for query parameters can be specified, these
will be overridden by parameters in the request
-->
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">text</str>
</lst>
</requestHandler>


Configuration

多个handlers (包括是相同的类的实例,却拥有不同的配置) 能够在solrconfig.xml 中配置。

<requestHandler name="/foo" default="true" class="my.package.CustomRequestHandler" />
<requestHandler name="/bar" class="my.package.AnotherCustomRequestHandler" />
<!-- initialization args may optionally be defined here -->
<lst name="defaults">
<int name="rows">10</int>
<str name="fl">*</str>
<str name="version">2.1</str>
<lst>
</requestHandler>

<requestHandler name="/baz" class="my.package.AnotherCustomRequestHandler">
<requestHandler name="/update/my-pdf-reader" class="my.package.MyPdfHandler">


Handler Resolution

客户端可以通过带有“gt”这个参数的“/select/ url”请求,也可以通过在solrconfig.xml配置的方式来决定要访问的SolrRequestHandler。对于上面的例子,假设它运行在localhost:8080/solr/上,你能够这样访问
http://localhost:8080/solr/select/?qt=foo&... http://localhost:8080/solr/select/?qt=bar&... http://localhost:8080/solr/baz?... http://localhost:8080/solr/update/my-pdf-reader?...
Solr是通过下面的步骤去选择一个handler并处理请求的.....

寻找name属性跟请求中的qt参数匹配的handler

寻找在配置文件中“default=true”的handler

寻找在配置文件中name属性为“standad”的handler

使用StandardRequestHandler的默认实例

注意!如果你的配置文件solrconfig.xml 包含有name属性为"/select", "/update", 或"/admin",那么你的程序将不会沿用标准的请求处理过程,而将会是你自己自定义的逻辑。

扩展自己的Handler

实现一个SolrRequestHandler 最简单的方法是去扩展 RequestHandlerBase 类。也参考下面的几个Request Handlers。

solr自带的Handler

目前solr提供如下handler给大家使用,下面给出的solr官方文档中hander的文档,如果大家觉得有必要让笔者详细解析每个handler的用法,可以回复一下,笔者将会在接下来的章节中为大家讲解每个handler的具体用法。

Search handlers:

DisMaxRequestHandler

LukeRequestHandler

MoreLikeThisHandler

SearchHandler

SpellCheckerRequestHandler

Update handlers:

DataImportHandler

BinaryUpdateRequestHandler

CSVUpdateRequestHandler

ExtractingRequestHandler

JsonUpdateRequestHandler

XmlUpdateRequestHandler

XsltUpdateRequestHandler
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: