TermsComponent 组件说明
TermsComponent组件提供对字段中的索引词的访问以及与每个词匹配的文档数量。这对于构建 auto-suggest 功能或在 term 级别而不是搜索或文档级别操作的任何其他功能都很有用。检索索引顺序中的 term 非常快,因为实现直接使用 Lucene 的 TermEnum 来遍历术语字典。从某种意义上说,这个搜索组件在整个索引上提供了快速的 field-faceting,不受基本查询或任何过滤器的限制。返回的文档频率是与该词匹配的文档数量,包括任何已被标记为删除但尚未从索引中删除的文档。
TermsComponent 组件配置
在solrconfig.xml进行了配置定义Term搜索组件
<searchComponent name="terms" class="solr.TermsComponent"/>
在请求处理程序中使用TermsComponent组件
<requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<bool name="terms">true</bool>
<bool name="distrib">false</bool>
</lst>
<arr name="components">
<str>terms</str>
</arr>
</requestHandler>
TermsComponent 组件包含在 Solr 的现成的请求处理程序中的 /terms 请求处理程序中 - 请参阅 RequestHandlers 。 您也可以将这个组件添加到另一个处理程序中,并且在 HTTP 请求中传递 “terms = true” 以获得条件。如果仅在单独的处理程序中定义它,则在查询时必须使用该处理程序,以获取条件而不是将常规文档作为结果。
请注意,此请求处理程序的默认值将参数 “terms” 设置为 true,这允许根据请求返回条件。参数 “distrib” 被设置为 false,这使得这个处理程序只能在一个 Solr 内核上使用。
参数“distrib” 被设置为 true,这使得这个处理程序支持分布式索引。
TermsComponent 也支持分布式索引。对于 /terms 请求处理程序,您必须提供以下两个参数: 1)shards 参数 指定分布式索引配置中的分片。有关分布式索引的更多信息,请参见使用索引分片的分布式搜索。 2)shards.qt 参数 指定 Solr 用于请求分片的请求处理程序。
TermsComponent 组件参数
- terms 参数
如果设置为
true
,则启用条款组件。默认情况下,条款组件处于关闭状态(false
)。例:terms=true
- terms.fl 参数
指定从中检索 term 的字段。如果
terms=true
,则该参数是必需的。例:terms.fl=title
- terms.list 参数
获取逗号分隔的 term 列表的文档频率。词总是以索引顺序返回。如果
terms.ttf
设置为 true,则返回它们的总词频。如果定义了多个terms.fl
,那么这些统计数据将在每个请求的字段中为每个词返回。例:
terms.list=termA,termB,termC
- terms.limit 参数
指定要返回的最大 term 数。默认是
10
。如果限制设置为小于0的数字,则不执行最大限制。虽然这不是必需的,但是这个参数或者terms.upper
必须被定义。例:
terms.limit=20
- terms.lower 参数
指定开始的 term。如果未指定,则使用空字符串,从而导致 Solr 从字段的开始处开始。
例:
terms.lower=orange
- terms.lower.incl 参数
如果设置为 true,则包含下限项(在结果中指定
terms.lower
)。例:
terms.lower.incl=false
- terms.mincount 参数
指定要返回的最小文档频率,以便将术语包含在查询响应中。结果包括小数(即 >= mincount)。
例:
terms.mincount=5
- terms.maxcount 参数
指定一个 term,为了包含在查询响应中而必须具有的最大文档频率。默认设置是-1,它不设置上限。结果包含 maxcount(即<= maxcount)。
例:
terms.maxcount=25
- terms.prefix 参数
限制匹配以指定字符串开头的 term。
例:
terms.prefix=inter
- terms.raw 参数
如果设置为 true,则返回索引项的原始字符,而不管其是否可读。例如,索引形式的数字是不可读的。
例:
terms.raw=true
- terms.regex 参数
限制符合正则表达式的条件。
例:
terms.regex=.*pedist
- terms.regex.flag 参数
定义一个 Java 正则表达式标志,用于计算
terms.regex
定义的表达式。有关每个标志的详细信息,请参见:http://docs.oracle.com/javase/tutorial/essential/regex/pattern.html。有效的选项是:
case_insensitive
comments
multiline
literal
dotall
unicode_case
canon_eq
unix_lines
例:
terms.regex.flag=case_insensitive
- terms.stats 参数
在结果中包含索引统计信息。目前只返回一个集合的 numDocs。当与
terms.list
结合时它提供足够的信息来计算术语列表的逆文件频率(IDF)。- terms.sort 参数
定义如何对返回的条件进行排序。有效选项
count
按频率排序,首先选择最高频率,或index
按索引顺序排序。例:
terms.sort=index
- terms.ttf 参数
如果设置为 true,那么同时返回
df
(docFreq)和ttf
(totalTermFreq)统计信息,在terms.list
请求 term 中。在这种情况下,响应格式是:<lst name="terms"> <lst name="field"> <lst name="termA"> <long name="df">22</long> <long name="ttf">73</long> </lst> </lst> </lst>
- terms.upper 参数
指定要停止的术语。虽然此参数不是必需的,但是该参数或
terms.limit
必须定义。例:
terms.upper=plum
- terms.upper.incl 参数
如果设置为 true,则结果集合中将包含上限项目。默认值是 false。
例:
terms.upper.incl=true
对 term 请求的回应是 term 及其文档频率值的列表。
单机查询示例
关键参数:
- terms=true
- distrib=true
分布式查询
关键参数:
- terms=true
- distrib=true
- shards=localhost:8891/solr/testindex,localhost:8892/solr/testindex
- shards.qt=/terms