当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《混合bool和多重匹配/功能得分查询》经验,为你挑选了1个好方法。

我目前正在进行一项多重匹配和功能评分的混合查询.JSON的重要部分如下所示:

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

但是,我还希望包含不一定与查询匹配但具有大于0的特定数值的结果.我认为bool查询会执行此操作,但我不知道如何使用bool查询功能评分查询.

我知道多匹配查询只是bool查询的简写,我可以将多匹配查询扩展到它的bool对应部分,但是,我不知道如何在其中进行功能评分.

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



1> Garry Weldin..:

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

{
    "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"
        }
    }
}

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有