elasticsearch - 在弹性搜索中使用 match_phrase_prefix 未获得匹配
问题描述
我使用了 match_phrase_prefix。如果我通过输入一些字符进行搜索,它会提供结果,但是当我在搜索字段中添加更多字符时,查询返回零命中。
例如:如果我输入abcd
它返回匹配。但是,如果我打字abcd e
,那么即使有匹配,我也没有被击中。
以下是我使用的查询
这里_field
:是归档名称和
_queryText
: 是我输入的搜索字段值。
如果是,我可以在这里使用必须或应该条件或最小值应该匹配,那么如何?提前致谢
{
body: {
'query': {
'match_phrase_prefix': {
[_field]: _queryText
},
},
'size': 15,
}
}
解决方案
Match_phrase_prefix与 match_phrase 相同,只是它允许在文本中的最后一个词进行前缀匹配。
在您的情况下,当您abcd
在搜索查询中搜索唯一的术语时,它将进行前缀查询,并且包含abcd
, abcde
,的文档abcdef
都将匹配。
但是,只要您将搜索查询更改为abcd e
,它就会有两个词abcd
和e
。它将在 上进行匹配查询并在 上abcd
进行前缀查询e
,因此包含abcd
后跟e
oref
或的文档efg
将匹配。
如果你能提供你的示例文档会更好,这样我就可以更好地解释什么应该匹配,什么不应该匹配以及它背后的原因。
推荐阅读
- java - @Query 结果到 DTO 导致 spring data jpa 中的构造函数错误
- python - 在 EC2 实例中的文件夹之间移动文件的问题
- node.js - 我似乎无法安装 Sqlite3
- python - Plotly:如何更改 3D 曲面图的配色方案?
- linux - 为什么while循环中的语法错误会中断脚本(但不会在while循环之外)
- iptables - 带有 iptbales 的传出 mac 地址过滤器
- javascript - 如何在javascript中将单词推送到数组中
- r - 如何根据R中的条件使用两个变量合并三个数据框
- php - 未捕获的 Symfony\Component\Debug\Exception\FatalThrowableError:
- javascript - React - 返回具有 JavaScript 和字符串的 className 值的唯一/最佳方式?