SOLR範囲クエリを機能させようとしています。1,200 万を超えるドキュメントを含むデータベースがあり、次のようないくつかのパラメーターでフィルター処理しています。
product_category:"category1" AND product_group:"group1" AND product_manu:"manufacturer1"
クエリ自体は約 700 のドキュメントを返し、平均で 2 ~ 3 秒で実行されます。
しかし、そのクエリに日付範囲ファセットを追加したい場合 (過去 x 年間に毎日追加された製品の数を確認したい場合)、50 秒以上で実行されます。そのため、一致するすべてのドキュメントを取得し、Java で手動カウントを実行する方が速いようです。だから私はファセットで何か間違ったことをしているに違いないと思いますか?
ファセット クエリの例を次に示します。
start=0&rows=0&facet.query=productDate%3A[0999-12-26T23%3A36%3A00.000Z+TO+2012-05-22T15%3A58%3A05.232Z]&q=source%3A%22source1%22+AND+productCategory%3A%22category1%22+AND+type%3A%22type1%22&facet=true&facet.limit=-1&facet.sort=count&facet.range=productDate&facet.range.start=NOW%2FDAY-5000DAYS&facet.range.end=NOW%2FDAY%2B1DAY&facet.range.gap=%2B1DAY
私の唯一の説明は、SOLR が "q=" パラメータの結果として得られる 700 個のドキュメントよりも大きなドキュメント プールのフィールドをカウントしているということです。または、別の方法でドキュメントをフィルタリングする必要がありますか?
filterCache のサイズを変更してみましたが、うまくいきましたが、このようなクエリではメモリが無駄になっているようです。結局、700 を超えるドキュメントの集約は非常に高速であるはずです。