gpt4 book ai didi

elasticsearch - Elasticsearch中任意查询的 “actual hits”的计数(不仅仅是匹配的文档)

转载 作者:行者123 更新时间:2023-12-02 23:53:14 25 4
gpt4 key购买 nike

这真的让我感到沮丧。我试图寻找解决方案已经很长时间了,但是无论我在哪里寻求人们的相同要求,他们要么想要一些不同的东西(例如hereherehere),要么就找不到解决方案问题(例如here)。

我需要什么

我想知道我的搜索总共有多少次命中,而与所使用的查询类型无关。我是,而不是,不是在谈论您总是从ES获得的匹配数,即为该查询找到的文档数,而是与我的查询匹配的文档特征的出现数。
例如,我可以有两个带有文本字段“description”的文本文档,两个文档都包含单词hero,但其中一个包含两次。
就像这里的最小示例:

索引映射:

PUT /sample
{
"settings": {
"index" : {
"number_of_shards" : 1,
"number_of_replicas" : 0
}
},
"mappings": {
"doc": {
"properties": {
"name": { "type": "keyword" },
"description": { "type": "text" }
}
}
}
}

两个样本文件:
POST /sample/doc
{
"name": "Jack Beauregard",
"description": "An aging hero"
}


POST /sample/doc
{
"name": "Master Splinter",
"description": "This rat is a hero, a real hero!"
}

...以及查询:
POST /sample/_search
{
"query": {
"match": { "description": "hero" }
},
"_source": false
}

...这给了我:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0.22396864,
"hits": [
{
"_index": "sample",
"_type": "doc",
"_id": "hoDsm2oB22SyyA49oDe_",
"_score": 0.22396864
},
{
"_index": "sample",
"_type": "doc",
"_id": "h4Dsm2oB22SyyA49xDf8",
"_score": 0.22227617
}
]
}
}

因此, 有两个匹配项( "total": 2),这是正确的,因为查询匹配两个文档。 我想知道我的查询多次匹配每个文档(或此文档的总和),在此示例中为 3 ,因为第二个文档包含两次搜索词。
重要:这只是一个简单的示例。但是我希望它适用于任何类型的查询和任何映射,还应包含 inner_hits和所有嵌套的文档。
我没想到这会这么困难,因为无论如何它一定是ES在搜索过程中遇到的信息,对吗?我的意思是,它将在其中具有更高命中率的文档排名更高,那么为什么不能获得这些命中数呢?
我很想称它们为“内部命中”,但这是另一种ES功能的名称(请参见下文)。

我尝试过的/可以尝试的(但是很丑)
  • 我可以使用突出显示(无论如何我都会这样做),并尝试使突出显示为每个“内部匹配”生成一个突出显示(并且不要将它们组合),然后对整个搜索结果进行后处理并计算所有突出显示->当然,这非常丑陋,因为(1)我真的不想对结果进行后处理,并且(2)我必须通过将size设置为高值来获得所有结果足够的值(value),但实际上我只想获得客户要求的结果数量。这将是很多开销!
  • inner_hits功能听起来很有前途,但这仅意味着您可以独立处理嵌套文档中的匹配,以突出显示每个匹配。我已经将其用于我的嵌套文档,但是它不能解决这个问题,因为(1)它在内部命中级别上仍然存在,并且(2)我也希望它也可以用于非嵌套查询。

  • 有没有一种方法可以对任意查询以通用方式实现?如果有任何建议,我将不胜感激。我什至不愿意通过修改排名或使用脚本字段来解决问题。

    非常感谢!

    最佳答案

    由于性能太差,我绝对不建议将其用于任何实际用途,但是在解释API的结果中的频率计算一词中,该数据在技术上可用。有关概念性说明,请参见What is Relevance?;有关用法,请参见Explain API

    关于elasticsearch - Elasticsearch中任意查询的 “actual hits”的计数(不仅仅是匹配的文档),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56057886/

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