Solr 3.4を実行しており、90,000ドキュメント程度の比較的小さなインデックスがあります。これらのドキュメントは複数の論理ソースに分割されているため、各検索には特定のソースに適用されるフィルタークエリがあります。例:
?q=<query>&fq=source:<source>
ここsource
で、は古典的な文字列フィールドです。edismaxを使用しており、デフォルトの検索フィールドテキストがあります。
現在q=*
、実行にかかる時間は。よりも平均20倍長くなっていますq=*:*
。違いは非常に顕著で、 100ミリ秒*:*
と*
最大3500ミリ秒かかります。ドキュメントセット内の一般的な単語(すべてのドキュメントのほぼ50%に一致)を検索すると、200ミリ秒未満の結果が返されます。
debugQueryがオンになっているクエリを見ると、*
がに解析され、がに解析されているDisjunctionMaxQuery((text:*))
こと*:*
がわかりMatchAllDocsQuery(*:*)
ます。これは理にかなっていますが、それでもこの規模の減速(ドキュメントの50%に一致するものよりも2000%の減速)を説明しているとは思えません。
これを引き起こしている可能性がありますか?微調整できるものはありますか?