fq で frange と OR を併用すると Solr のパフォーマンスが低下する

トピック作成者:ks-solruserml-bot (2025/05/29 15:17 投稿)
3
(The bot translated the original post https://lists.apache.org/thread/mn65d8jtfpbcr1hj8h95c4ds0y30d77r into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
こんにちはチームの皆さん、
frange と OR を fq で併用すると Solr のクエリ時間が増大する問題
現在、fq
フィルターで frange
と OR
条件を組み合わせて使用した際に、Solr のクエリ応答時間が著しく増加するという問題に直面しています。この組み合わせを使用しないクエリと比較すると、応答時間が大幅に増えます。
クエリの例
fq={!cache=false tag=prm}field:value OR {!frange l=1 u=1 v=$funcQuery}
ここで $funcQuery
は、動的なパラメータに基づいてドキュメントを取得する関数クエリです。
観察結果
{!frange l=1 u=1 v=$funcQuery}
だけを使用すると、クエリは高速に実行されます(約20ms)。{!cache=false tag=prm}field:value
単体でもクエリは高速で、AND
演算子を使っても問題ありません。- しかし、
OR
を使って両者を組み合わせると、クエリ時間が大幅に増加します(約700ms)。 - データセットは比較的大きいですが、同程度の複雑さの他のクエリは効率的に実行されています。
質問
- なぜ
frange
をOR
条件で使用すると、クエリ時間が大幅に増加するのでしょうか? - パフォーマンスを改善するための最適化手法や、代替となるクエリ構造はありますか?
- 関数クエリやフィルターの適用方法を見直すと改善するでしょうか?
- このユースケースにおいて
frange
の代替はありますか?というのも、関数のパラメータが頻繁に変化するため、インデックス時に処理することができないのです。
どんなご意見や提案でも大変ありがたいです。よろしくお願いいたします。
トピックへ返信するには、ログインが必要です。