[[query-dsl-match-query-phrase-prefix]] === Match phrase prefix query ++++ Match phrase prefix ++++ Returns documents that contain the words of a provided text, in the **same order** as provided. The last term of the provided text is treated as a <>, matching any words that begin with that term. [[match-phrase-prefix-query-ex-request]] ==== Example request The following search returns documents that contain phrases beginning with `quick brown f` in the `message` field. This search would match a `message` value of `quick brown fox` or `two quick brown ferrets` but not `the fox is quick and brown`. [source,console] -------------------------------------------------- GET /_search { "query": { "match_phrase_prefix" : { "message" : { "query" : "quick brown f" } } } } -------------------------------------------------- [[match-phrase-prefix-top-level-params]] ==== Top-level parameters for `match_phrase_prefix` ``:: (Required, object) Field you wish to search. [[match-phrase-prefix-field-params]] ==== Parameters for `` `query`:: + -- (Required, string) Text you wish to find in the provided ``. The `match_phrase_prefix` query <> any provided text into tokens before performing a search. The last term of this text is treated as a <>, matching any words that begin with that term. -- `analyzer`:: (Optional, string) <> used to convert text in the `query` value into tokens. Defaults to the <> mapped for the ``. If no analyzer is mapped, the index's default analyzer is used. `max_expansions`:: (Optional, integer) Maximum number of terms to which the last provided term of the `query` value will expand. Defaults to `50`. `slop`:: (Optional, integer) Maximum number of positions allowed between matching tokens. Defaults to `0`. Transposed terms have a slop of `2`. `zero_terms_query`:: + -- (Optional, string) Indicates whether no documents are returned if the `analyzer` removes all tokens, such as when using a `stop` filter. Valid values are: `none` (Default):: No documents are returned if the `analyzer` removes all tokens. `all`:: Returns all documents, similar to a <> query. -- [[match-phrase-prefix-query-notes]] ==== Notes [[match-phrase-prefix-autocomplete]] ===== Using the match phrase prefix query for search autocompletion While easy to set up, using the `match_phrase_prefix` query for search autocompletion can sometimes produce confusing results. For example, consider the query string `quick brown f`. This query works by creating a phrase query out of `quick` and `brown` (i.e. the term `quick` must exist and must be followed by the term `brown`). Then it looks at the sorted term dictionary to find the first 50 terms that begin with `f`, and adds these terms to the phrase query. The problem is that the first 50 terms may not include the term `fox` so the phrase `quick brown fox` will not be found. This usually isn't a problem as the user will continue to type more letters until the word they are looking for appears. For better solutions for _search-as-you-type_ see the <> and the <>.