按特定数量增加CloudSearch _score

时间:2016-06-23 15:25:04

标签: amazon-web-services search aws-sdk amazon-cloudsearch

我是AWS cloudsearch的新手,有相关性得分(_score),它是根据搜索词出现次数自动计算的。

我的问题是,我可以根据具体的关键值按特定金额增加相关性得分(_score)。

示例:

让我们说cloudsearch返回以下两个文件

fields: {
    {
       fullname: "Daniel Wildt",
       active: "T",
       _score: "82"
    }
    {
       fullname: "Robert",
       active: "F",
       _score: "84"
    }
}

我希望第一个文件(Daniel Wildt)更高......这意味着通过 active = T aws应该为分数添加一些内容

1 个答案:

答案 0 :(得分:0)

不幸的是,您无法直接使用自定义rank,因为它仅适用于已启用排序的数字字段(int,double,date)。

以下是几个替代选项

  • 排序:如果您计划对active字段给予很大的权重,它将变得足够主导,在功能上等同于sort运算符。也就是说,您只需在查询中添加sort=active desc即可在F
  • 之前获得T结果
  • 转换为int :在提交要编入索引的文档之前将T和F映射到数值,例如T = 1 F = 0,然后在自定义排名表达式中使用这些来影响排序结果&expr.myrank=_score+active&sort=myrank
  • 字段权重:将active:'T'添加到您的查询中,这可能会排除active = F的结果,然后使用字段权重来调整此部分查询的影响:{ {1}}。这将需要一些调整