当前位置: 首页 > 面试题库 >

Elasticsearch词组前缀结果

宗晟
2023-03-14
问题内容

我有两个ES查询:

{match:{text:{query: "text box", type: "phrase"}}}
{match:{text:{query: "text bo", type: "phrase_prefix"}}}

问题是第二个查询返回的文档少于第一个查询,尽管我希望第二个查询返回第一个查询的所有记录以及其他内容。我想念什么?

谢谢


问题答案:

这可能是由于将max_expansions其设置为默认值10

试试这个

{
  "query": {
    "match_phrase_prefix": {
      "text": {
        "query": "text bo",
        "max_expansions": 100
      }
    }
  }
}

该线程将帮助您了解术语的扩展方式。使max_expansions1000并查看结果。

基本上,您有很多以bo开头的单词,例如 bond,boss, 而且由于 “ x” 按字母顺序排在最后,因此您无法获得期望的结果。

我希望这有帮助!



 类似资料:
  • 问题内容: 我是ES的新手,我正在尝试建立一个查询,该查询将对多个字段使用phrase_prefix,因此我不必进行多次搜索。 这是到目前为止我得到的: 有人知道如何搜索多个字段,例如“ last_name”吗? 问题答案: 您正在使用的文本查询已被弃用(有效重命名),而改为使用match query 。匹配查询支持单个字段,但是您可以使用multi_match查询,该查询支持完全相同的选项并允许

  • 我有一个字段,使用空白标记器和小写和asciifolding过滤器进行分析。我试图运行一个同时包含前缀和通配符的查询。我们正在用ElasticSearch取代一个使用纯Lucene的本土搜索引擎,类似的查询确实使用Lucene语法,但在ElasticSearch中不起作用。 例如,该查询将查找在“name”字段中有“Smith John”的所有文档。 如果我省略引号,我会得到结果,但这包括在同一文

  • 问题内容: 假设在我的Elasticsearch索引中,我有一个名为“点”的字段,其中将包含由标点符号分隔的字符串(例如“ first.second.third”)。 我需要搜索例如“ first.second”,然后获取其“点”字段包含正好是“ first.second”或以“ first.second”开头的字符串的所有条目。 我在理解文本查询的工作方式时遇到问题,至少我无法创建执行此任务的查

  • 信息:我正在使用Larvel 6.1版。0,我希望我的网站支持不同的语言。因此,我创建了一个新的中间件,并希望为我的路由提供一个前缀,以便Laravel可以确定语言。也许有更好的方法,但这是我到目前为止所做的。 URL最终应该是这样的: mywebsite.com/en/home, url/locale/home 用于设置区域设置的中间件 在内核中注册了新的中间件setlocale。php 我的网

  • 问题内容: 在Elasticsearch中是否可以在单个查询中获取所有包含短语1或短语2的文档?我知道要匹配一个短语,可以使用以下查询: 但是,如果有多个词组并且目标是检索包含这些词组之一的文档,情况如何? 问题答案: 您可以将两个查询包装在布尔查询的子句中:

  • 本文向大家介绍数据结构中的前缀和后缀表达式,包括了数据结构中的前缀和后缀表达式的使用技巧和注意事项,需要的朋友参考一下 编写算术表达式的方法称为符号。算术表达式可以用三种不同但等效的符号表示,即,无需更改表达式的本质或输出。这些符号是– 中缀 字首 后缀 缀符号是正常的符号,我们在编写不同的数学表达式时会使用它们。前缀和后缀表示法有很大不同。 前缀符号 在这种表示法中,运算符以操作数为前缀,即运算