术语向量组件

TermVectorComponent 是一个搜索组件,旨在返回与搜索匹配的文档的附加信息。

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

术语向量组件配置

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" />

调用术语向量组件

以下示例显示了使用上述配置调用此组件

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

可选

默认值:false

如果为 true,则词向量组件将运行。

tv.docIds

可选

默认值:无

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

tv.fl

可选

默认值:无

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

tv.all

可选

默认值:false

如果为 true,则将启用下面列出的所有布尔参数(tv.dftv.offsetstv.positionstv.payloadstv.tftv.tf_idf)。

tv.df

可选

默认值:false

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

tv.offsets

可选

默认值:false

如果为 true,则返回文档中每个词的偏移信息。

tv.positions

可选

默认值:false

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

tv.payloads

可选

默认值:false

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

tv.tf

可选

默认值:false

如果为 true,则返回文档中每个词的文档词频信息。

tv.tf_idf

可选

默认值:false

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

此参数要求 tv.tftv.df 同时为 true。这在计算上可能很昂贵。(结果未显示在示例输出中)

要查看词向量组件输出的示例,请参阅 Wiki 页面:https://cwiki.apache.org/confluence/display/solr/TermVectorComponentExampleOptions

有关架构要求,另请参阅章节 按用例划分的字段属性

SolrJ 和词向量组件

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