詞彙向量元件
詞彙向量元件是一個搜尋元件,旨在傳回有關符合您搜尋條件的文件之額外資訊。
對於回應中的每個文件,詞彙向量元件可以傳回詞彙向量、詞彙頻率、反向文件頻率、位置和位移資訊。
詞彙向量元件設定
詞彙向量元件在 Solr 中不會隱式啟用,必須在您的 solrconfig.xml
檔案中明確設定。此頁面上的範例顯示如何在 Solr 的「techproducts」範例中設定它
bin/solr start -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" />
呼叫詞彙向量元件
以下範例顯示使用上述設定呼叫此元件
https://127.0.0.1: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>
詞彙向量請求參數
以下範例顯示此元件的一些可用請求參數
https://127.0.0.1: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
。這可能會耗費大量計算資源。(結果未顯示在範例輸出中)
若要查看 TermVector 元件輸出的範例,請參閱 Wiki 頁面:https://cwiki.apache.org/confluence/display/solr/TermVectorComponentExampleOptions
關於綱要需求,另請參閱 依使用案例分類的欄位屬性 章節。
SolrJ 與 Term Vector 元件
SolrQuery
類別和 QueryResponse
類別均未提供特定的方法呼叫來設定 Term Vector 元件參數或取得 "termVectors" 輸出。但是,有一個修補程式:SOLR-949。