在介绍solr处理搜索请求的过程时,有说到用户的请求是先由请求处理器处理后再由查询解析器接手处理。而在请求处理器中其实还有一个——搜索组件。
搜索组件是在搜索处理器的生命周期内发生的可配置的处理步骤。搜索组件能够让搜索处理器实现在一次搜索请求中实现多个搜索功能。比如高亮,面搜索等。
下面就介绍一下相关的配置
1.自定义组件:
<searchComponent name="query" class="solr.QueryComponent" />
<searchComponent name="facet" class="solr.FacetComponent" />
<requestHandler name="/select" class="solr.SearchHandler">
<arr name="components">
<str>query</str>
<str>facet</str>
</arr>
</requestHandler>
上面就是两个搜索组件及其在搜索请求处理器中的配置。
searchComponent标签有两个参数,一个是其名称,一个是其对应的类。
在requestHandler标签下 name属性值为components的arr标签表示其为一组搜索组件列表。其下的每一个str标签都表示一个搜索组件。
2.默认组件
如果我们并没有在搜索请求处理器中配置搜索组件,solr定义的默认组件就会自动生效。
默认组建包括一下几个:
query:查询组件,作为solr查询处理的核心,利用处于活跃状态的搜索器对查询语句进行解析和执行。查询组件在索引中找出符合条件的文档并形成结果文档集。可以提供给其它配置的 搜索组件使用。另外,查询组件默认开启,而其它组件需要在查询请求中指定相应参数开启。
facet:分面组件,根据字段分面进行结果的统计和过滤。
mlt:更多类似结果组件,通过该组件的相关参数,得到与结果文档集相似的其它文档。
highlight:高亮组件,对文档中与查询语句高度相关的内容高亮显示。
stats:统计组件,针对结果文档集中的数字类容计算类似最大值等数据。
expand:扩展组件,通常用来展开被折叠的搜索结果
debug:调试组件,返回执行过的查询语句解析后的结果及相关的文档分析计算信息。旨在帮助开发人员分析查询语句的问题。
3.预处理组件和后置组件
<!-- 预处理组件 -->
<arr name="first-components">
<str>myFirstComponentName</str>
</arr>
<!-- 后置组件 -->
<arr name="last-components">
<str>myLastComponentName</str>
</arr>
预处理组件和后置组件只能与默认组件一起用。也就是说在配置了自定义组件后,默认组件会被替代而不执行,此时就算配置了预处理组件和后置组件也不会生效。
预处理组件是在默认组件之前生效,而后置组件则是在默认组件之后生效。这里要注意的是调试组件一定是最后生效的,无论有没有后置组件。