copyField に関する更なる情報はありますか | KandaSearch Community Support Forum

copyField に関する更なる情報はありますか

トピック作成者:ks-solruserml-bot (2025/04/30 11:37 投稿)
5
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/loxw4m861ztxc0bw1515hhsp545f4qyw into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

では、copyField はどのように動作するのでしょうか?
stored="true" の場合、インデックス内に同じデータのコピーが2つできることになるのでしょうか?
copyField 要素には stored 属性を指定でき、その値をソースフィールドとは異なるものに設定することは可能なのでしょうか?
copyField の定義済み属性には何があり、それらはソースフィールドの属性とどのように相互作用するのでしょうか?
これらの質問の答えはどこで見つけるべきだったのでしょうか?

Mark H Wood

返信投稿者:ks-solruserml-bot (2025/04/30 11:37 投稿)

あなたの質問に対して、公式ドキュメントが良い出発点になると思います:
https://solr.apache.org/guide/solr/latest/indexing-guide/copy-fields.html

上記のドキュメントを読むことで、いくつかの質問に答えが見つかるはずですし、copyField の全体的な構造についての理解にも役立つはずです。

全体として、copyField は通常のフィールドとあまり変わりません。storedindexeddocValues などの属性を定義できます。copyField は、ソースフィールドとは異なる解析パイプラインを使って検索したい場合や、catch-all フィールドを作成したい場合などに、1つ以上のソースフィールドの値を格納するためのフィールドです。

Solr は、Lucene の下層にインデックス作成のためにドキュメントを渡す前に、スキーマに定義された copyField 設定に基づいて、ドキュメントからフィールドを抽出し、それらを copyField にコピーして「完全な」ドキュメントを形成します。

その後は、stored=true であれば保存され、indexed=true であればインデックス化されるなど、他の通常のフィールドと同じように扱われます。

— Rahul

返信投稿者:ks-solruserml-bot (2025/04/30 11:37 投稿)

公式ドキュメントが、あなたの質問に対する良い出発点になるはずです:
https://solr.apache.org/guide/solr/latest/indexing-guide/copy-fields.html

上記のドキュメントを読むことで、いくつかの質問に答えが見つかり、copyField に関する理解の全体像をつかめるでしょう。

はい、そのはずですね。私はすでにそのドキュメントを読みました。

全体として、copyField は通常のフィールドとあまり変わらず、storedindexeddocValues などの属性を定義できます。

ありがとうございます、これは知っておいてよかったです。
ただし、https://solr.apache.org/guide/solr/latest/indexing-guide/copy-fields.html には、定義可能な属性の一覧も、copyField が field と同じ属性を受け入れるという記述もありません。そこに書かれているのは sourcedestmaxChars だけです。

copyField は、catch-all フィールドを作りたいときや、ソースフィールドとは異なる解析パイプラインを使いたいときに、1つ以上のソースフィールドの内容を格納するための宛先となるフィールドです。

Solr は、Lucene の下層にインデックス作成のためにドキュメントを渡す前に、スキーマに定義された copyField 設定に基づいて、ドキュメントからフィールドを抽出し、それらを copyField にコピーして「完全な」ドキュメントを形成します。

上記のページには、「フィールドの値がコピーされるのか、参照されるのか」は明記されていません。そして、それを推測できるような情報も私は見つけられていません。

その後は、stored=true であれば保存され、indexed=true であればインデックス化されるなど、他の通常のフィールドと同じように扱われます。

これも知っておいて良かったです。ありがとうございます。

これで私の当面の疑問は解消しました:
つまり、ソースフィールドと copyField の属性には注意を払う必要があり、不要なストレージの重複を避けるためには慎重に設計すべきだ、ということですね。私たちは学術論文の全文を扱っており、かなりのサイズになるため、スキーマ設計を工夫することでストレージや I/O をかなり節約できるかもしれません。

Mark H Wood

返信投稿者:ks-solruserml-bot (2025/04/30 11:38 投稿)

copyField はフィールドではありません。
これは、「あるフィールドに送られるテキストを複製して、別のフィールドにも送る」という指示です。

wunder
Walter Underwood
wunder@wunderwood.org
http://observer.wunderwood.org/ (私のブログ)

返信投稿者:ks-solruserml-bot (2025/04/30 11:38 投稿)

これは最後に足りなかったピースでした。あのページは混乱を招きます。タイトル「Copy Fields」からしてそうです。例はすべて一行だけで、copyField の文脈がどこにも示されていないか、説明されていません。
よければ、そのページを読んでみてください。まるで copyField が新しいフィールドを定義するものであって、既存のフィールド間の関係を示すものではないかのように読めてしまいます。

今日、以下のページを見つけて、ようやく copyField がどう使われるかの文脈が分かりました:
https://stackoverflow.com/q/4596075/2916377

皆さんの忍耐に感謝します。

ちなみに、IU(インディアナ大学)とパデュー大学はインディアナポリスで分離中です。私たちは IU インディアナポリスとなり、パデュー大学は隣接地や市内各所に独自のキャンパスを建設中です。

Mark H Wood

返信投稿者:ks-solruserml-bot (2025/04/30 11:38 投稿)

copyField はかなり単純です。フィールドの処理が始まる前に、あるフィールドに送られるデータを別のフィールドにコピーします。copyField 要素(またはディレクティブ)は属性を取りません。単にコピーするだけです。保存やインデックス作成などの属性は、宛先フィールド側で管理されます。コピー元とコピー先のフィールドは完全に独立しており、「どこからコピーされたか」を互いに知ることはありません。

最も一般的な使い方は、同じテキストを検索用にテキスト処理されたフィールドと、ファセット用に文字列として処理されるフィールドの両方に送ることです。もう一つの用途は、すべてのテキストを収集する「キャッチオール」フィールドです。

IUPUI(インディアナ大学パデュー大学インディアナポリス校)という名前は変わったんですか?私はノース・セントラル高校に通っていました。

wunder
Walter Underwood
wunder@wunderwood.org
http://observer.wunderwood.org/ (私のブログ)

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2025 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?