美文网首页
如何对搜索结果进行二次打分

如何对搜索结果进行二次打分

作者: 郭彦超 | 来源:发表于2020-04-11 23:29 被阅读0次

    这么做一般有两个目的
    1、对返回的商品做精细化排序,尤其是在通过es实现相似推荐时会被经常用到
    2、固定商品结果数检索,当商品太多时,为了确保服务性能打分算法无法在全量商品进行计算,这时可取头部商品后按照新的规则进行重排序

    假如用户通过搜索框检索“快闪邀请函”,我们通过rescore对召回的商品进行二次重排,将描述中包含“企业”,且商品收藏量相对比较大的商品进行提权显示:

    GET search_data/_search
    {
       "query" : {
          "match" : {
             "title": {
                "operator" : "and",
                "query" : "快闪邀请函"
             }
          }
       },
       "rescore" : [ {
          "window_size" : 100,
          "query" : {
             "rescore_query" : {
                "match" : {
                   "desc" : {
                      "query" : "企业" 
                   }
                }
             },
             "query_weight" : 0.7,
             "rescore_query_weight" : 1.2
          }
       }, {
          "window_size" : 10,
          "query" : {
             "score_mode": "multiply",
             "rescore_query" : {
                "function_score" : {
                   "script_score": {
                      "script": {
                        "source": "Math.log10(doc.user_collect.value + 2)"
                      }
                   }
                }
             }
          }
       } ]
    }
    
    

    需要注意:
    1、不要在原始查询中使用sort进行排序,否则无法进行rescore查询
    2、如果对搜索结果进行分页查询的话,不要试图改变window_size的值,如果改变会在进行翻页是引起数据显示的混乱

    • window_size
      每个分片中进行二次重排的商品数量

    • query_weight
      原始查询语句打分权重

    • rescore_query_weight
      recore查询语句权重

    • score_mode
      默认原始查询score+二次评分score得到最终的文档score;还支持:multiply、avg、max、min

    相关文章

      网友评论

          本文标题:如何对搜索结果进行二次打分

          本文链接:https://www.haomeiwen.com/subject/ncqmmhtx.html