コピー・フィールドの使用

DSE Searchは、schema.xmlファイル内でstored=falseコピー・フィールド・ディレクティブをサポートしています。取り込んだデータは、コピー・フィールド・メカニズムによって検索のデスティネーション・フィールドにコピーされますが、Cassandraには格納されません。

DSE Searchは、schema.xmlファイル内でstored=falseを含んだcopyFieldディレクティブをサポートしています。取り込んだデータは、コピー・フィールド・メカニズムによって検索のデスティネーション・フィールドにコピーされますが、Cassandraには格納されません。新しいcopyFieldディレクティブをschema.xmlファイルに追加すると、既存のデータおよび新たに取り込まれたデータのインデックスは、新しいディレクティブの結果としてコピーされたときに再作成されます。

Solr stored=true copyFieldディレクティブが削除されます。DataStaxでは、以下のようにディレクティブを変更してコアを再度読み込むことによって既存のコアをアップグレードすることを推奨します。
  1. schema.xmlファイルで、copyFieldディレクティブの格納された属性値をtrueからfalseに変更します。
  2. solrconfig.xmlおよび変更したschema.xmlを送信します
  3. Solrコアを再度読み込み、特定の場所でのインデックス再作成を指定します。

古いデータおよびCassandraカラムはそのまま残りますが、格納されたコピー・フィールドは、新しいデータには適用されません。

コピー・フィールドと複数値フィールドの使用

複数の値をフィールドにコピーするためにコピー・フィールドを使用する場合は、たとえばデータの挿入時にJSONでデータをフォーマットする必要がないので、CQLは便利です。Solr HTTP API updateコマンドを使用する場合は、データをフォーマットする必要があります。

上書きを防ぐために、CQL BATCHコマンドを使用して1つのCQL文にカラム値を挿入します。このプロセスは、Solr HTTP APIと整合性が取られています。ここでコピーされるフィールドはすべて、挿入されるドキュメント内に存在する必要があります。値がCassandraに格納されているかどうかにかかわらず、カラム値を挿入するには、BATCHを使用する必要があります。

ファセット化のためのdocValuesとコピー・フィールドの使用

docValuesを使用すると、「Solr Wiki」で説明されている、ファセット化、グループ分け、フィルター処理、ソート、および他の操作のパフォーマンスが向上します

docValuesを使用するファセット化では、フィールドが単一値ファセット・フィールドであっても、スキーマはmultiValued="true"を指定する必要があります。このフィールドはschema.xmlファイル内にdocValues="true"を含む必要があります。Solrによるカウントをサポートしているフィールド型を使用する必要があります。値をトークン化するテキスト型を使用することはできませんが、文字列型は正常に動作します。DataStax Enterpriseでは、以下を除いたコピー・フィールドのすべての機能をサポートしています。
  • maxChars属性はサポートされていません。
  • 同じ動的フィールドとの間でのコピーはサポートされていません。