转载请声明出处,谢谢。翻译也很辛苦
4.2。查询请求处理
Solr的主要目的是搜索,因此,处理搜索请求是Solr中最重要的过程之一。在本节中,您将了解如何Solr处理搜索请求和如何定制请求处理,以更好地适应您的特定搜索需求。
4.2.1。Request-handling概述
通过HTTP请求Solr发生。如果你想查询Solr,然后你发送一个HTTP GET请求。另外,如果你想在Solr索引文档,使用一个HTTP POST请求。下面的清单显示了HTTP GET请求查询示例Solr服务器(从清单2.1重复)。
清单4.4。查询示例Solr服务器的HTTP GET请求
你可以把这个URL输入到web浏览器,使用命令行工具像旋度,或使用的示例驱动应用程序的书,以防止自己类型的查询。执行这个请求使用示例驱动程序,你的类型
cd $SOLR_IN_ACTION
java -jar solr-in-action.jar listing #.#
#.#参数应该替换为清单执行,如4.4。从本书的示例代码使用http实用建议,因为你不需要做任何copying-and-pasting或额外的输入运行代码清单,和它作用于所有Java平台。清单4.4是当运行该实用程序的输出
java -jar solr-in-action.jar listing 4.4
INFO [main] (ExampleDriver.java:92) - Found example class sia.Listing for arg http
INFO [main] (ExampleDriver.java:125) - Running example Listing with args: -listing 4.4 Feb 13, 2013 6:21:32 PM org.apache.solr.client.solrj.impl.HttpClientUtil createClient INFO: Creating new http client, config:maxConnections=128&maxConnectionsPerHost=32&followRedirects=false
Sending HTTP GET request (listing 4.4):
http://localhost:8983/solr/collection1/select? q=iPod& fq=manu:Belkin& sort=price asc& fl=name,price,features,score& df=text& wt=xml&start=0& rows=10
Solr returned: HTTP/1.1 200 OK
...
http实用程序提供了其他选项允许您覆盖Solr服务器的地址或更改响应类型XML以外的东西,比如JSON。看到一个选项的完整列表,输入java -jar solr-in-action.jar list – h。
图4.4显示了事件的顺序和主要组件参与处理这个Solr请求。从图4.4的左上角开始,
图4.4。一系列事件处理请求/选择请求处理程序。
1、客户端应用程序发送一个HTTP GET请求
http://localhost:8983/solr/collection1/select?q=….
查询参数通过GET请求的查询字符串。
2、Jetty接受请求并将其传递给Solr的统一要求调度员在请求中使用/ Solr上下文路径。在技术方面,统一调度请求
是一个Java servlet过滤器映射到/ * Solr的web应用程序,看到org.apache.solr.servlet.SolrDispatchFilter。
3、Solr的请求分配器使用collection1的一部分包括请求路径以确定核心的名字。接下来,调度员定位/select请求处理程序在solrconfig.xml对collection1的注册的核心。
4、/select请求处理程序处理请求使用管道的搜索组件(覆盖部分4.2.4)。
5、在处理请求之后,结果格式化响应作家组件并返回给客户端应用程序;默认情况下,/select处理程序返回结果为XML。响应都包含在7.7节。
请求调度的主要目的是找到正确的核心来处理请求,如collection1,包括然后注册请求路由到合适的请求处理程序的核心,在这种情况下/select。在实践中,请求调度程序的默认配置是足够的对于大多数应用程序。另一方面,是常见的定义一个自定义搜索请求处理程序或自定义一个现有的处理程序,比如/选择。让我们深入/select处理程序是如何工作的,以获得更好的理解如何定制一个请求处理程序。
4.2.2。搜索处理程序
这个清单显示/select的定义从xml请求处理程序。
清单4.5。/select定义从xml选择请求处理程序
在幕后,所有请求处理程序是一个Java类实现的:在这种情况下,solr.SearchHandler。在运行时,solr。org.apache.solr.handler.component.SearchHandler SearchHandler解析为内置的Solr类。一般来说,任何时候你看到solr。作为一个在solrconfig类的前缀。xml,你知道这意味着Solr的核心Java包:“分析。”、“模式。”、“处理程序。”、“搜索。”、“更新。”、“核心。”、“请求。”、“update.processor。”、“实效。”、“拼写。”、“handler.component。”,或“handler.dataimport。“这速记符号有助于减少杂乱Solr的配置文档。
在Solr中,有两种主要类型的请求处理程序:搜索处理程序为索引查询处理和更新处理程序。我们将了解更多关于在未来更新处理程序章中,我们将讨论索引。现在,让我们专注于搜索请求处理程序如何处理查询,如图4.5所示。
图4.5。搜索请求处理程序的参数装饰(违约、附加和不变量),组件和last-components first-components
search-handler结构如图4.5所示的目的是使您易于适应Solr的方法将管道为您的应用程序。例如,您可以定义您自己的请求处理程序,或者更常见的是,一个自定义搜索组件添加到现有的请求处理程序,比如/select。一般来说,一个搜索处理程序由以下阶段,并且每个阶段可以定制solrconfig.xml:
1。请求参数装饰使用
1。default——设置默认参数对请求如果不明确所提供的客户端
2。invariants-不变量参数设置为固定值,覆盖客户机提供的值
3。appends—–,附加的参数结合参数由客户提供
2。first-components——执行一个可选的搜索组件链首先执行预处理任务
3。components——主链搜索组件,必须至少包括查询组件
4。last-components-An可选搜索组件链,应用持续执行后处理任务
请求处理程序不需要定义在所有阶段。如清单4.5中,您可以看到从/选择仅定义违约部分。这意味着所有其他阶段都继承自基solr。SearchHandler实现。如果没有定义,主要组件部分使用的是默认的搜索组件列表。这个列表的默认搜索组件将4.2.4节中介绍。在实践中,自定义请求处理程序通常用于简化客户机应用程序。例如,在第二章我们介绍了Solritas示例使用一个自定义请求处理程序,权力/浏览、功能丰富的搜索体验,同时保持Solritas简单的客户端代码。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
记录下遇到的问题 $num = 2.07; var_dump((int)($num*100)); 这个输出多少,大家可以猜测一下。答案是 206 这个是浮点型的通病 解决方案就是用 strval转化成字符串 $num = 2.07; var_dump((int…