首页 > 解决方案 > 在弹性搜索中使用 match_phrase_prefix 未获得匹配

问题描述

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

例如:如果我输入abcd它返回匹配。但是,如果我打字abcd e,那么即使有匹配,我也没有被击中。

以下是我使用的查询

这里_field:是归档名称和

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

如果是,我可以在这里使用必须或应该条件或最小值应该匹配,那么如何?提前致谢

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

标签: elasticsearchangular5

解决方案


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

在您的情况下,当您abcd在搜索查询中搜索唯一的术语时,它将进行前缀查询,并且包含abcd, abcde,的文档abcdef都将匹配。

但是,只要您将搜索查询更改为abcd e,它就会有两个词abcde。它将在 上进行匹配查询并在 上abcd进行前缀查询e,因此包含abcd后跟eoref或的文档efg将匹配。

如果你能提供你的示例文档会更好,这样我就可以更好地解释什么应该匹配,什么不应该匹配以及它背后的原因。


推荐阅读