Added cautionary note to match_phrase_prefix explaining its shortcomings
Closes #17655
This commit is contained in:
parent
370af45c09
commit
e4df68b627
|
@ -5,7 +5,7 @@
|
|||
:major-version: 5.x
|
||||
:branch: master
|
||||
:jdk: 1.8.0_73
|
||||
:defguide: https://www.elastic.co/guide/en/elasticsearch/guide/current
|
||||
:defguide: https://www.elastic.co/guide/en/elasticsearch/guide/master
|
||||
:plugins: https://www.elastic.co/guide/en/elasticsearch/plugins/master
|
||||
:javaclient: https://www.elastic.co/guide/en/elasticsearch/client/java-api/master/
|
||||
:issue: https://github.com/elastic/elasticsearch/issues/
|
||||
|
|
|
@ -8,25 +8,49 @@ allows for prefix matches on the last term in the text. For example:
|
|||
--------------------------------------------------
|
||||
{
|
||||
"match_phrase_prefix" : {
|
||||
"message" : "this is a test"
|
||||
"message" : "quick brown f"
|
||||
}
|
||||
}
|
||||
--------------------------------------------------
|
||||
|
||||
It accepts the same parameters as the phrase type. In addition, it also
|
||||
accepts a `max_expansions` parameter that can control to how many
|
||||
prefixes the last term will be expanded. It is highly recommended to set
|
||||
it to an acceptable value to control the execution time of the query.
|
||||
For example:
|
||||
accepts a `max_expansions` parameter (default `50`) that can control to how
|
||||
many prefixes the last term will be expanded. It is highly recommended to set
|
||||
it to an acceptable value to control the execution time of the query. For
|
||||
example:
|
||||
|
||||
[source,js]
|
||||
--------------------------------------------------
|
||||
{
|
||||
"match_phrase_prefix" : {
|
||||
"message" : {
|
||||
"query" : "this is a test",
|
||||
"query" : "quick brown f",
|
||||
"max_expansions" : 10
|
||||
}
|
||||
}
|
||||
}
|
||||
--------------------------------------------------
|
||||
|
||||
[IMPORTANT]
|
||||
===================================================
|
||||
|
||||
The `match_phrase_prefix` query is a poor-man's autocomplete. It is very easy
|
||||
to use, which let's you get started quickly with _search-as-you-type_ but it's
|
||||
results, which usually are good enough, can sometimes be confusing.
|
||||
|
||||
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
|
||||
phase `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
|
||||
<<search-suggesters-completion,completion suggester>> and
|
||||
{guide}/_index_time_search_as_you_type.html[Index-Time Search-as-You-Type].
|
||||
|
||||
===================================================
|
Loading…
Reference in New Issue