在弹性搜索中未使用match_phrase_prefix获得匹配

时间:2019-03-06 11:45:52

标签: elasticsearch angular5

我用过match_phrase_prefix。如果我通过输入一些字符进行搜索,它将提供结果,但是当我在搜索字段中添加更多字符时,查询将返回零命中。

例如:如果我输入abcd,它将返回match。 但是,如果我输入abcd e,那么即使有匹配项,我也不会获得成功。

以下是我使用过的查询

此处_field:是文件名,

_queryText:是我输入的搜索字段值。

如果可以,我是否可以在此处使用必须或应该满足的条件或最小值,然后如何? 预先感谢

{
  body: {
    'query': {
      'match_phrase_prefix': {
        [_field]: _queryText
      },
    },
    'size': 15,
  }
}

1 个答案:

答案 0 :(得分:2)

Match_phrase_prefix与match_phrase相同,只是它允许在文本的最后一项上进行前缀匹配。

在您的情况下,当您搜索abcd作为搜索查询中的唯一术语时,它将进行前缀查询和包含abcdabcde,{{1 }}将全部匹配。

但是,一旦您将搜索查询更改为abcdef,它就会有两个单词abcd eabcd。它将在e上进行匹配查询,并在abcd上进行前缀查询,因此包含e后跟abcdeef的文档将匹配。

最好提供示例文档,这样我才能更好地解释应该匹配的内容,不应该匹配的内容以及其背后的原因。