詞彙向量元件

詞彙向量元件是一個搜尋元件,旨在傳回有關符合您搜尋條件的文件之額外資訊。

對於回應中的每個文件,詞彙向量元件可以傳回詞彙向量、詞彙頻率、反向文件頻率、位置和位移資訊。

詞彙向量元件設定

詞彙向量元件在 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.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。這可能會耗費大量計算資源。(結果未顯示在範例輸出中)

若要查看 TermVector 元件輸出的範例,請參閱 Wiki 頁面:https://cwiki.apache.org/confluence/display/solr/TermVectorComponentExampleOptions

關於綱要需求,另請參閱 依使用案例分類的欄位屬性 章節。

SolrJ 與 Term Vector 元件

SolrQuery 類別和 QueryResponse 類別均未提供特定的方法呼叫來設定 Term Vector 元件參數或取得 "termVectors" 輸出。但是,有一個修補程式:SOLR-949