gpt4 book ai didi

elasticsearch - 在 Elastic Search 中按匹配文本对 match_phrase 搜索结果进行分组

转载 作者:行者123 更新时间:2023-11-29 02:46:09 27 4
gpt4 key购买 nike

给定一个像这样的短语匹配查询:

{
'match_phrase': {
'text.english': {
'query': "The fox jumped over the wall",
'phrase_slop': 4,
}
}
}

有没有一种方法可以按完全匹配对结果进行分组?

因此,如果我有 1 个包含“The quick fox jumped over the small wall”的 text.english 文档和 3 个包含“The lazy fox jumped over the big wall”的文档,我最终得到这两组结果。

我可以运行多个查询并在 ES 之外进行一些处理,但我需要一个能够在大量文档上合理执行的解决方案。理想情况下,我希望有一种方法可以使用我错过的聚合来做到这一点。

我想出的最佳解决方案是运行上面带有高亮显示的查询,从所有结果中解析出所有高亮显示,然后根据高亮显示内容对它们进行分组。这对于非常小的结果集来说很好,但是超过 1000 个文档的结果集就慢得令人望而却步。

编辑:也许我可以更清楚一点。如果我有具有以下值的示例文档:

  1. “敏捷的狐狸跳过了小墙。等等等等很多页不相关的文字。”
  2. “懒惰的狐狸跳过了大墙。等等等等很多页不相关的文字。”
  3. “懒惰的狐狸跳过了大墙。等等等等很多页不相关的文字。”
  4. “懒惰的狐狸跳过了大墙。等等等等很多页不相关的文字。”

我希望能够使用查询文本“The fox jumped over the wall”对我的结果进行如下分组:

  • “灵巧的狐狸跳过小墙”——文献1
  • “懒狐跳墙”——文献2、3、4

最佳答案

在我看来,highlighting 是唯一的选择,因为它是 Elasticsearch 显示匹配的文本“部分”的唯一方式。在您的情况下,您希望根据“匹配”的内容对文档进行分组。

如果文本会更短(比如几个单词),也许更复杂的解决方案是将文本拆分成 shingle 的方式,并以某种方式对这些短语进行分组。 .也许

但是对于文本页面,我认为唯一的选择是使用突出显示并在之后执行额外的步骤来对突出显示的部分进行分组。

关于elasticsearch - 在 Elastic Search 中按匹配文本对 match_phrase 搜索结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33304401/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com