タームベクターコンポーネント

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 を持つ) と組み合わせて、"techproducts" サンプルスキーマのように、termVector 属性で設定されたフィールドのタームベクトルを取得できます。例えば、

<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 Unique Key ではない) のリストに対して、タームベクトルが返されます。

tv.fl

オプション

デフォルト: なし

指定されたコンマ区切りのフィールドリストに対して、タームベクトルが返されます。指定されていない場合は、fl パラメーターが使用されます。

tv.all

オプション

デフォルト: false

true の場合、以下にリストされているすべてのブール値パラメーター (tv.dftv.offsetstv.positionstv.payloadstv.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.tftv.dfの両方がtrueである必要があります。これは計算コストが高くなる可能性があります。(結果はサンプル出力には表示されません)

TermVectorコンポーネントの出力例については、Wikiページを参照してください:https://cwiki.apache.org/confluence/display/solr/TermVectorComponentExampleOptions

スキーマの要件については、「ユースケース別のフィールドプロパティ」のセクションも参照してください。

SolrJとTerm Vectorコンポーネント

SolrQueryクラスもQueryResponseクラスも、Term Vectorコンポーネントのパラメータを設定したり、「termVectors」の出力を取得したりするための特定のメソッド呼び出しを提供していません。ただし、それに対するパッチがあります:SOLR-949