术语向量组件: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.df
,tv.offsets
,tv.positions
,tv.payloads
,tv.tf
和tv.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.tf
和tv.df
是 true。这可能在计算上是昂贵的。(结果不显示在示例输出中)
要查看 TermVector 组件输出的示例,请参阅Wiki页面:http://wiki.apache.org/solr/TermVectorComponentExampleOptions
SolrJ 和术语向量组件
SolrQuery 类和 QueryResponse 类都不提供特定的方法调用来设置术语向量组件参数或获取 "termVectors" 输出。但是,它有一个补丁:SOLR-949。