Multi Term Query Rewrite

Multi term queries, like wildcard and prefix are called multi term queries and end up going through a process of rewrite. This also happens on the query_string. All of those queries allow to control how they will get rewritten using the rewrite parameter:

  • 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.
  • 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. 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.
  • 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.