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