3.1. 请求分配器(从技术角度看,统一请求分配器就是一个Java servlet过滤器,可以为Solr Web应用过滤出符合/*的URL)的主要职能是根据用户请求语句定位到处理该请求的内核,如collection1,然后将用户请求交给该内核中已注册的对应请求处理器(requestHandler),如/select;/select请求处理器利用一系列搜索组件处理客户端请求;查询结果经由响应读写器组件进行格式化之后返回给客户端应用(默认XML格式)。
3.2. Solr中有两类主要的请求处理器:处理查询请求的搜索处理器和处理索引请求的更新处理器。
3.3. 执行完默认搜索组件之后,再执行拼写检查组件,这是搜索请求处理器的一种常见设计模式。拼写检查组件作为后处理组件,被定义在<last-component>
中。
3.4. 下面展示了在查询处理阶段使用到的6个内置搜索组件组成的处理链
查询->分面->更多类似结果->高亮->统计->调试->
解读:
(1)查询组件是Solr查询处理过程的核心,在索引中找出所欲符合条件的文档,形成结果文档集供其他组件使用,默认处于启动状态,其他组件则需在查询请求中指定相应的参数来启用;
(2)分面组件用于根据字段分面进行结果统计与过滤,如
<str name=”facet”>true</str>
(3)更多类似结果组件将识别出与搜索结果文档集中的文档相似的其他文档;
(4) 高亮组件用于对结果文档中与查询语句高度相关的文档内容进行高亮表示;
(5) 统计组件可以为结果文档中的数值字段计算最小值,最大值,总和,平均值和标准差等简单的统计指标。
(6)调试组件会返回执行过的查询语句解析后的结果以及结果文档集中每个文档相关度分数计算的详细信息。
在Solr管理控制台的Plugins/Stats页面的QUERYHANDLER选项中可以查看所有处理活跃状态的Solr搜索处理器,如下所示
3.5.优化系统性能的配置这里不作过多介绍。