solr4.7.2中TermsComponent组件使用

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

http://localhost:8891/solr/testindex/terms?q=*%3A*&wt=json&indent=true&distrib=false&terms=true&terms.fl=sname&terms.limit=-1&terms.sort=index

分布式查询

关键参数:

  • terms=true
  • distrib=true
  • shards=localhost:8891/solr/testindex,localhost:8892/solr/testindex
  • shards.qt=/terms

http://localhost:8891/solr/testindex/terms?q=*%3A*&wt=json&indent=true&distrib=true&terms=true&terms.fl=sname&terms.limit=-1&terms.sort=index&shards=localhost:8891/solr/testindex,localhost:8892/solr/testindex&shards.qt=/terms

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章