术语向量组件
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.df
、tv.offsets
、tv.positions
、tv.payloads
、tv.tf
和tv.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.tf
和tv.df
同时为true
。这在计算上可能很昂贵。(结果未显示在示例输出中)
要查看词向量组件输出的示例,请参阅 Wiki 页面:https://cwiki.apache.org/confluence/display/solr/TermVectorComponentExampleOptions
有关架构要求,另请参阅章节 按用例划分的字段属性。
SolrJ 和词向量组件
SolrQuery
类和 QueryResponse
类都不提供特定的方法调用来设置词向量组件参数或获取“termVectors”输出。但是,有一个补丁:SOLR-949。