# 短语前缀匹配查询

原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase-prefix.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase-prefix.html)（修改该链接为官网对应的链接）

译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=4882555](http://www.apache.wiki/pages/viewpage.action?pageId=4882555)（修改该链接为 ApacheCN 对应的译文链接）

贡献者 : @羊两头

## 短语前缀匹配查询

match_phrase_prefix与match_phrase相同，除了它允许在文本的最后一个词上的前缀匹配

例如：

```
GET /_search
{
    "query": {
        "match_phrase_prefix" : {
            "message" : "quick brown f"
        }
    }
}

```

它接受与短语类型相同的参数。 此外，它还接受一个max_expansions参数（默认值为50），它可以控制最后一项将被展开的前缀的数量。 强烈建议将其设置为可接受的值，以控制查询的执行时间

例如：

```
GET /_search
{
    "query": {
        "match_phrase_prefix" : {
            "message" : {
                "query" : "quick brown f",
                "max_expansions" : 10
            }
        }
    }
}
```

```
match_phrase_prefix查询是一个简单的自动填充。 非常容易使用，可以让你开始快速搜索你所需的类型，查询结果通常是正确的，但是有时可能是混乱的
```

```
建立一个短语字符串查询如： quick brown f。 此查询通过创建quick和brown短语查询工作（即术语quick必须存在，并且必须后跟术语brown）。 然后，它查看排序的术语字典以找到以f开头的前50个术语，并将这些术语添加到短语查询。
```

```
问题是前50个术语可能不包括术语狐狸，所以不会找到阶段快速棕色狐狸。 这通常不是问题，因为用户将继续键入更多的字母，直到他们正在寻找的单词出现
```