タームベクターコンポーネント
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.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。