Solr(v9.6.1)でのインデックス作成とクエリ処理を最適化するための、より良い方法を見つけるための支援が必要です

(The bot translated the original post https://lists.apache.org/thread/nr38wctrf5lr1j34c985rp625qqfokwo into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
みなさん、こんにちは。
私たちのインデックスには、サプライヤーとその製品に関するデータが含まれており、これをフロントエンドで検索リクエストに応じて表示しています。
例:
サプライヤーID:678 に対して、インデックスには以下の 2 製品が登録されています。
product-id(ユニーク)
document1:
{
"product-id": 123,
"product-price": 2000,
"product-name": "ジュートバッグ",
"supplier-id": 678,
"company-name": "BagFactoryLimited"
}
document2:
{
"product-id": 863,
"product-price": 4500,
"product-name": "トロリーバッグ",
"supplier-id": 678,
"company-name": "BagFactoryLimited"
}
ご覧のとおり、インデックス内の各ドキュメントには、
- 製品の詳細(
product-id
,product-price
,product-name
) - サプライヤーの詳細(
supplier-id
,company-name
)
が含まれています。
問題1:(インデックス時)
サプライヤーに関連するフィールド(例えば会社名など)に変更があった場合、サプライヤーのすべての製品を再インデックスしています。
ただし、サプライヤーに関するデータはすべての製品で同じです。
参考までに:
私たちは1日あたり約 5億(5Cr) 件のドキュメントを再インデックスしています。
→ 冗長なデータのインデックスを避けられるような、より良い最適化方法があれば教えていただきたいです。
問題2:(クエリ実行時)
現在のインデックスからクエリでデータを取得する際、1つのサプライヤーにつき最も関連性の高い製品を1つだけ表示しています。
(たとえ1つ以上のドキュメントがマッチしたとしても)
このために、collapse query を supplier-id
フィールドに対して使っています(ドキュメント間の関係がわからないため)。
※ただし、これは非常にリソース負荷が高いです。
例:
fq={!collapse field=supplier-id}
参考までに:
私たちは1日あたり約 250万(25 Lakh) 件のクエリを処理しています。
→ 上記のような負荷の高いクエリを避け、検索応答を最適化できるような、より良いインデックス構成があれば教えていただきたいです。
当社の Solr インフラ情報:
- Solr バージョン: 9.6.1
- ノード数: 8
- シャード数: 62
- ノードごとのヒープサイズ: 12GB
- ノードごとのRAM: 50GB
- ノードごとのCPUコア数: 16
- ドキュメント数: 約 20億(20Cr)
- インデックスサイズ: 約 250GB
- ルーティング: implicit
よろしくお願いいたします。
Uday Kumar
Product Search Tech
トピックへ返信するには、ログインが必要です。