codecamp

术语向量组件:TermVectorComponent

TermVectorComponent 是一个搜索组件,用于返回关于与您的搜索匹配的文档的附加信息。

对于响应中的每个文档,TermVectorCcomponent 可以返回术语向量、术语频率、逆文档频率、位置和偏移量信息。

术语向量组件配置

TermVectorComponent 未在 Solr 中隐式启用 - 它必须在 solrconfig.xml 文件中显式配置。本页中的示例显示了如何在 Solr 的 "techproducts" 示例中进行配置:

bin/solr -e techproducts

要启用这个组件,您需要使用一个 searchComponent 元素来配置它:

<searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>

然后必须将请求处理程序配置为使用此组件名称。在这个 techproducts 例子中,该组件与一个名为 /tvrh 的特殊请求处理程序相关联,默认情况下,使用 tv=true 参数启用术语向量;但您可以将其与任何请求处理程序关联:

<requestHandler name="/tvrh" class="org.apache.solr.handler.component.SearchHandler">
  <lst name="defaults">
    <bool name="tv">true</bool>
  </lst>
  <arr name="last-components">
    <str>tvComponent</str>
  </arr>
</requestHandler>

一旦您的处理程序被定义了,您可以和任何模式一起使用(uniqueKeyField)对于用 termVector 属性配置的字段,例如在 techproducts 示例模式中:

<field name="includes"
       type="text_general"
       indexed="true"
       stored="true"
       multiValued="true"
       termVectors="true"
       termPositions="true"
       termOffsets="true" />

调用术语向量组件

下面的例子显示了使用上面的配置调用这个 TermVectorComponent 组件:

http://localhost:8983/solr/techproducts/tvrh?q=*:*&start=0&rows=10&fl=id,includes&wt=xml
...
<lst name="termVectors">
  <lst name="GB18030TEST">
    <str name="uniqueKey">GB18030TEST</str>
  </lst>
  <lst name="EN7800GTX/2DHTV/256M">
    <str name="uniqueKey">EN7800GTX/2DHTV/256M</str>
  </lst>
  <lst name="100-435805">
    <str name="uniqueKey">100-435805</str>
  </lst>
  <lst name="3007WFP">
    <str name="uniqueKey">3007WFP</str>
    <lst name="includes">
      <lst name="cable"/>
      <lst name="usb"/>
    </lst>
  </lst>
  <lst name="SOLR1000">
    <str name="uniqueKey">SOLR1000</str>
  </lst>
  <lst name="0579B002">
    <str name="uniqueKey">0579B002</str>
  </lst>
  <lst name="UTF8TEST">
    <str name="uniqueKey">UTF8TEST</str>
  </lst>
  <lst name="9885A004">
    <str name="uniqueKey">9885A004</str>
    <lst name="includes">
      <lst name="32mb"/>
      <lst name="av"/>
      <lst name="battery"/>
      <lst name="cable"/>
      <lst name="card"/>
      <lst name="sd"/>
      <lst name="usb"/>
    </lst>
  </lst>
  <lst name="adata">
    <str name="uniqueKey">adata</str>
  </lst>
  <lst name="apple">
    <str name="uniqueKey">apple</str>
  </lst>
</lst>

术语向量请求参数

下面的例子显示了这个组件的一些可用的请求参数:

http://localhost:8983/solr/techproducts/tvrh?q=includes:[* TO *]&rows=10&indent=true&tv=true&tv.tf=true&tv.df=true&tv.positions=true&tv.offsets=true&tv.payloads=true&tv.fl=includes
tv 参数

如果为true,将运行术语向量组件。

tv.docIds 参数

对于给定的以逗号分隔的 Lucene 文档 ID 列表(不是 Solr 唯一键),将返回术语向量。

tv.fl 参数

对于给定的以逗号分隔的字段列表,将返回术语向量。如果未指定,则使用fl参数。

tv.all 参数

如果为true将启用以下列出的所有布尔参数:tv.dftv.offsetstv.positionstv.payloadstv.tftv.tf_idf

tv.df 参数

如果为true,将返回集合中该术语的文档频率(DF)。这可能在计算上是昂贵的。

tv.offsets 参数

如果为true,将返回文档中每个术语的偏移信息。

tv.positions 参数

如果为true,则返回位置信息。

tv.payloads 参数

如果为true,则返回有效载荷信息。

tv.tf 参数

如果为true,返回文档中每个术语的文档术语频率信息。

tv.tf_idf 参数

如果为true计算每个术语的 TF/DF(即:TF * IDF)。请注意,这是“ 字频乘以逆文档频率” 的文字计算,而不是经典的 TF-IDF 相似性度量。

这个参数需要tv.tftv.df是 true。这可能在计算上是昂贵的。(结果不显示在示例输出中)

要查看 TermVector 组件输出的示例,请参阅Wiki页面:http://wiki.apache.org/solr/TermVectorComponentExampleOptions

SolrJ 和术语向量组件

SolrQuery 类和 QueryResponse 类都不提供特定的方法调用来设置术语向量组件参数或获取 "termVectors" 输出。但是,它有一个补丁:SOLR-949

Solr空间搜索
QueryElevationComponent:查询提升组件
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

SolrCloud

SolrCloud配置和参数

如何使用AsciiDoc

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }