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

混合布尔和多重匹配/功能得分查询

元玮
2023-03-14
问题内容

我目前正在做一个包含多重匹配和功能得分的查询。JSON的重要部分如下所示:

"function_score":{
    "query":{
        "query_string":{
            "query":"some query",
            "fields":["id","name","strippedDescription","colourSearch","sizeSearch"]
        }
    }
}

但是,我也想包括不一定与查询匹配但具有大于0的特定数值的结果。我认为布尔查询可以做到这一点,但是我不知道如何将布尔查询与功能分数查询。

我知道多重匹配查询只是布尔查询的简写,我可以将多重匹配查询扩展到其布尔匹配部分,但是,我不知道如何在其中进行功能评分。

有任何想法吗?顺便说一下,我的版本是1.1.0。


问题答案:

弄清楚了!我错过了可以在布尔查询中嵌套多字段查询的事实!我的最终解决方案如下所示:

{
    "query":{
        "function_score":{
            "query":{
                "bool":{
                    "should": [
                       {
                           "range": {
                              "allBoost": {
                                 "gt": 0
                              }
                           }
                       },{
                            "multi_match":{
                                "query":"some search query",
                                "fields":[
                                    "id",
                                    "name",
                                    "description",
                                    "category"
                                ]
                            }
                       }
                    ]
                }
            },
            "functions":[
                {
                    "filter":{
                        "range": {
                            "allBoost": {
                                "gt": 0
                            }
                        }
                    },
                    "script_score":{
                        "script":"doc['allBoost'].value"
                    }
                },
                {
                    "filter":{
                        "range": {
                            "allBoost": {
                                "lte": 0
                            }
                        }
                    },
                    "script_score":{
                        "script":"_score"
                    }
                }
            ],
            "boost_mode": "replace"
        }
    }
}


 类似资料:
  • 问题内容: 我正在用查询查询我的elasticsearch索引。查询本身的结构与此类似 我希望能够确定所有这些查询中哪一个是与结果匹配的查询。是否有内置的elasticsearch方法允许这样做,还是我必须手动进行? 问题答案: 您可以使用命名查询,然后在结果中获得匹配的查询的名称。 然后,在结果中,您将获得一个数组,其中包含与文档匹配的查询的名称。

  • 问题内容: 我开始与go一起工作了几个星期,(再一次)我偶然发现了一些对我来说似乎很奇怪的东西: play 我想同时分配两个变量。一个已经被声明,在更好的范围内,另一个没有被声明。 它不起作用:编译器尝试重新声明前一个变量。但是,如果在同一范围内声明此变量,则效果很好。 这是为什么? 问题答案: 您所经历的通常称为 “可变阴影” 。当您使用在内部范围内的任何变量,包括像语句和尽管缺乏支撑的,一个新

  • 通过看到我的结果,我有点困惑如何在MatchPherage和match query中进行评分 对于匹配短语,我有如下查询 获得的reults如下 a。“信用-消费者测试文章”得分12.64 b的文件。“信用-X测试文章”得分12.64 c的文件。“Credit-XYZ测试文章”得分10.92 d的文档。“信用测试文章”得分10.22 e的文件。“Credit-Z测试文章”得分09.40的文档 前两

  • 问题内容: 如何使用FLANN优化许多图片的SIFT功能匹配? 我有一个来自Python OpenCV文档的工作示例。但是,这是将一个图像与另一个图像进行比较,而且速度很慢。我需要它来搜索一系列图像(几千个)中匹配的特征,并且我需要它更快。 我目前的想法: 浏览所有图像并保存功能。怎么样? 将相机的图像与上述基础进行比较,然后找到正确的图像。怎么样? 给我结果,匹配图像或其他东西。 http://

  • 问题内容: (2)和(4)有什么区别? (3)和(5)有什么区别? 为什么在(3)和(6)中给出错误的结果? 问题答案: 除4外,所有这些都依赖于运算符的优先级。 在Java中,优先于。 这意味着2实际上是“读取”的: 因此,第一个的右侧操作数是一个布尔表达式,它将两个对象引用彼此进行比较(事实上,它们在这里都是s都是无关紧要的),在这里它们是不相同的。因此,右侧操作数为boolean 。 但是由

  • 我从事elasticsearch,我尝试混合两个工作查询。第一个是“and filter”,第二个是“bool filter”,但我失败了。 我的查询是从用户交互界面动态生成的。 “和过滤器”: 我需要“和过滤器”来查询数据,例如,字段必须等于“非洲”或“亚洲”或为空。这是一个工作查询的示例: 此查询工作正常,结果如下: 现在我需要用字段“D\u TYPESTATUS”来限制结果数据,该字段必须与