1.なぜフィルタは速くなりますか?
あなたがはっきりと見ることができる上記のフローチャートを参照してください、filter
とquery
の違いの多くは残っています。
例えば、query
比較は、最初のクエリは、その後、スコアを計算する際に、最終的な文書は、結果を返されます。
そして、filter
それはそれは、クエリを満たしているかどうかを判断することではない場合は、クエリ処理(文書レコード結果を満たしていない)キャッシュされます; MET、直接キャッシュされた結果を。
、総括するにはfilter
2通りの方法で、高速:
- キャッシュ結果の1組
- 2得点を数える避けます
2.ブール使用クエリ
Bool
クエリに対応するLucene
でBooleanQuery
一つ以上の条項によって、それは、各句は、特定のタイプを有します
必要があります
返された文書が満たさなければならないmust
条件句を、とスコアを計算に参加します
フィルタは、
文書が満たさなければならない返さfilter
好きな条件句をではなく、must
計算スコアに関与し、同様に、
それはすべき
文書が満足しないことが返されたshould
状態の句をbool
何がある場合は、クエリmust
またはfilter
一の以上でshould
句を限り、あなたはリターンを満たすことができるよう、。minimum_should_match
パラメータは、少なくともいくつかの条項を満たす定義しています。
must_notの
返される文書のための条件は、の定義を満たしていません
クエリは、両方持っている場合
filter
がありshould
、その後、少なくともそれが含まれているshould
句を。
bool
クエリはまた、無効の共同得点のオプションをサポートしてdisable_coord
一般的な計算因子得点は、クエリのすべてに依存します。
bool
クエリはまた、使用more_matches_is_better
こうして満足機構must和should
句文書がスコアを計算するために結合されます。
3.JavaAPIの使用
1 |
|