多値フィールドにある大量の要素

トピック作成者:ks-solruserml-bot (2024/07/03 12:11 投稿)
2
OpenOpen

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

こんにちは皆さん、

私たちの部門では、企業をインデックス化し、企業に関連する複数のティッカーを含むフィールドをドキュメントに格納しています。最初は問題なさそうでしたが、あるドキュメントではその多値フィールドに50,000以上の要素が含まれているのを見て驚きました。Solrがハングしてドキュメントを返さない場合もあります。これより多くの要素を含む他のドキュメントもあります。

このフィールドは *_ss フィールドで、彼らのクエリはこのフィールド内の値の正確な一致を使って企業名を返します。例えば:
ticker_fieldname_ss:"AAA NOE 12/31/21"。

このデータをインデックス化し、企業のティッカー情報を検索する最良の方法について考えています。

一つのアプローチとして、企業のフィールドとしてティッカー情報を格納する代わりに、各ティッカーを独立したドキュメントとして、その企業のフィールド名で格納する方法が考えられます。

皆さんのご意見をお聞かせいただければと思います。

よろしくお願いします。
Ryan

返信投稿者:ks-solruserml-bot (2024/07/03 12:11 投稿)

こんにちは、Ryanさん

Solrはこの種のドキュメントをインデックス化するのに問題はありませんが、取得することは別の問題です。多値フィールドの場合、ドキュメントをシリアライズする際に多くのデータ構造が作成されることが問題の原因かもしれません。

もしフィールドを返す必要がないのであれば、そのフィールドには stored=true を設定しないでください。もし必要な場合は、それを多値ではなく、すべての値をデリミタで区切って格納する方法はどうでしょうか。解析を使用してデリミタで分割することで、それでも検索が可能になります。ドキュメントを取得する際には、単純に巨大なフィールドを出力すれば良いです。

このような大きなフィールドでも、多数の多値フィールドよりも少ない時間とメモリを消費するはずです。また、デシリアライズも少ない時間で済むでしょう。ブラウザがXML形式でその多くのオブジェクトをきれいに表示するのを想像してみてください。

よろしくお願いします。
Markus

返信投稿者:ks-solruserml-bot (2024/07/03 12:11 投稿)

ありがとう、Markusさん。

そのフィールドはレスポンスで返す必要がないので、storedをfalseに設定します。

よろしく、
Ryan

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

KandaSearch

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

投稿の削除

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