2013-08-28 19:24:34 -04:00
|
|
|
[[query-dsl-multi-term-rewrite]]
|
2015-05-05 02:27:52 -04:00
|
|
|
== Multi Term Query Rewrite
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
Multi term queries, like
|
|
|
|
<<query-dsl-wildcard-query,wildcard>> and
|
|
|
|
<<query-dsl-prefix-query,prefix>> are called
|
|
|
|
multi term queries and end up going through a process of rewrite. This
|
|
|
|
also happens on the
|
|
|
|
<<query-dsl-query-string-query,query_string>>.
|
|
|
|
All of those queries allow to control how they will get rewritten using
|
|
|
|
the `rewrite` parameter:
|
|
|
|
|
2015-07-08 10:01:47 -04:00
|
|
|
* `constant_score` (default): A rewrite method that performs like
|
|
|
|
`constant_score_boolean` when there are few matching terms and otherwise
|
|
|
|
visits all matching terms in sequence and marks documents for that term.
|
|
|
|
Matching documents are assigned a constant score equal to the query's
|
|
|
|
boost.
|
2013-08-28 19:24:34 -04:00
|
|
|
* `scoring_boolean`: A rewrite method that first translates each term
|
|
|
|
into a should clause in a boolean query, and keeps the scores as
|
|
|
|
computed by the query. Note that typically such scores are meaningless
|
|
|
|
to the user, and require non-trivial CPU to compute, so it's almost
|
|
|
|
always better to use `constant_score_auto`. This rewrite method will hit
|
|
|
|
too many clauses failure if it exceeds the boolean query limit (defaults
|
|
|
|
to `1024`).
|
|
|
|
* `constant_score_boolean`: Similar to `scoring_boolean` except scores
|
|
|
|
are not computed. Instead, each matching document receives a constant
|
|
|
|
score equal to the query's boost. This rewrite method will hit too many
|
|
|
|
clauses failure if it exceeds the boolean query limit (defaults to
|
|
|
|
`1024`).
|
|
|
|
* `top_terms_N`: A rewrite method that first translates each term into
|
|
|
|
should clause in boolean query, and keeps the scores as computed by the
|
|
|
|
query. This rewrite method only uses the top scoring terms so it will
|
|
|
|
not overflow boolean max clause count. The `N` controls the size of the
|
|
|
|
top scoring terms to use.
|
|
|
|
* `top_terms_boost_N`: A rewrite method that first translates each term
|
|
|
|
into should clause in boolean query, but the scores are only computed as
|
|
|
|
the boost. This rewrite method only uses the top scoring terms so it
|
|
|
|
will not overflow the boolean max clause count. The `N` controls the
|
|
|
|
size of the top scoring terms to use.
|
2015-07-08 10:01:47 -04:00
|
|
|
* `top_terms_blended_freqs_N`: A rewrite method that first translates each
|
|
|
|
term into should clause in boolean query, but all term queries compute scores
|
|
|
|
as if they had the same frequency. In practice the frequency which is used
|
|
|
|
is the maximum frequency of all matching terms. This rewrite method only uses
|
|
|
|
the top scoring terms so it will not overflow boolean max clause count. The
|
|
|
|
`N` controls the size of the top scoring terms to use.
|