FAQ

Q.copyFieldとはなんですか?

A.

Apache Solrのmanaged-schema.xmlにおいてcopyFieldを使うと、インデクシング時にフィールド値をコピーする事ができます。

たとえば、次のようなcopyFieldを設定したとします。

   <copyField source="cat"      dest="text"/>
   <copyField source="name"     dest="text"/>
   <copyField source="manu"     dest="text"/>
   <copyField source="features" dest="text"/>

こうすると、インデクシング時にcat, name, manu, featuresフィールドの値がtextフィールドにコピーされます。このとき、コピー先のtextフィールドは、multiValued="true"でなければなりません。

このようにする一つの理由としては、分散している複数のフィールド値(上の例ではcat, name, manu, featuresフィールドの値)をコピー先のフィールド(上の例ではtextフィールド)にまとめ、個別のフィールドを検索する代わりにコピー先の一つのフィールドを検索することで検索速度を上げることを狙う、などがあげられます。ただし、フィールドが一つになってしまうことで、フィールドごとの重み調整やAnalyzeの細かな調整が効かなくなってしまいます。

日本語においては、次のような設定で形態素解析と文字N-gramの両方を使う、ということがよく行われます。

   <copyField source="title" dest="title_2g"/>

ここで、titleは形態素解析、title_2gは2-gramフィールドとします。

お見積もり・詳細は KandaSearch チームに
お気軽にお問い合わせください。

お問い合わせ