mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-06-28 17:34:17 -04:00
* delete asciidoc files
* add migrated files
* fix errors
* Disable docs tests
* Clarify release notes page titles
* Revert "Clarify release notes page titles"
This reverts commit 8be688648d
.
* Comment out edternal URI images
* Clean up query languages landing pages, link to conceptual docs
* Add .md to url
* Fixes inference processor nesting.
---------
Co-authored-by: Liam Thompson <32779855+leemthompo@users.noreply.github.com>
Co-authored-by: Liam Thompson <leemthompo@gmail.com>
Co-authored-by: Martijn Laarman <Mpdreamz@gmail.com>
Co-authored-by: István Zoltán Szabó <szabosteve@gmail.com>
76 lines
3.7 KiB
Markdown
76 lines
3.7 KiB
Markdown
---
|
||
navigation_title: "Match phrase prefix"
|
||
mapped_pages:
|
||
- https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase-prefix.html
|
||
---
|
||
|
||
# Match phrase prefix query [query-dsl-match-query-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 [prefix](/reference/query-languages/query-dsl-prefix-query.md), matching any words that begin with that term.
|
||
|
||
## Example request [match-phrase-prefix-query-ex-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`.
|
||
|
||
```console
|
||
GET /_search
|
||
{
|
||
"query": {
|
||
"match_phrase_prefix": {
|
||
"message": {
|
||
"query": "quick brown f"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
|
||
## Top-level parameters for `match_phrase_prefix` [match-phrase-prefix-top-level-params]
|
||
|
||
`<field>`
|
||
: (Required, object) Field you wish to search.
|
||
|
||
|
||
## Parameters for `<field>` [match-phrase-prefix-field-params]
|
||
|
||
`query`
|
||
: (Required, string) Text you wish to find in the provided `<field>`.
|
||
|
||
The `match_phrase_prefix` query [analyzes](docs-content://manage-data/data-store/text-analysis.md) any provided text into tokens before performing a search. The last term of this text is treated as a [prefix](/reference/query-languages/query-dsl-prefix-query.md), matching any words that begin with that term.
|
||
|
||
|
||
`analyzer`
|
||
: (Optional, string) [Analyzer](docs-content://manage-data/data-store/text-analysis.md) used to convert text in the `query` value into tokens. Defaults to the [index-time analyzer](docs-content://manage-data/data-store/text-analysis/specify-an-analyzer.md#specify-index-time-analyzer) mapped for the `<field>`. 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 [`match_all`](/reference/query-languages/query-dsl-match-all-query.md) query.
|
||
|
||
|
||
|
||
## Notes [match-phrase-prefix-query-notes]
|
||
|
||
### Using the match phrase prefix query for search autocompletion [match-phrase-prefix-autocomplete]
|
||
|
||
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* check out the [completion suggester](/reference/elasticsearch/rest-apis/search-suggesters.md#completion-suggester) and the [`search_as_you_type` field type](/reference/elasticsearch/mapping-reference/search-as-you-type.md).
|