如何更改字段的范围?

How do I change the range of a field?

我正在试验 Azure 搜索。我有一个带有 Edm.Double 字段的索引。我正在创建一个评分配置文件,以通过 Azure 搜索 REST API 提升此字段。目前,我有:

"scoringProfiles": [ 
  {
    "name":"myProfile",
    "functions": [
      {
        "type":"magnitude",
        "fieldName":"cost",
        "boost": 2.5,
        "magnitude": {
          "boostingRangeStart":0,
          "boostingRangeEnd":50
        }
      }
    ]
  }
]

我的挑战是,我真的不知道我的数据范围是多少。我只是一直想提升 cost 字段。在 C# 中,我知道我可以使用 Double.MinValueDouble.MaxValue 值来确定我的范围。但是,我不确定 Azure 搜索是否有这样的可用常量。我也不确定我是否可以在我的评分范围内使用负数。

有没有办法在未知的值范围内定义评分配置文件?

在这种情况下,我的意见是对 应用某种 bucketinghashing成本 价值。或者创建一个新属性,它是 cost 值的分桶结果(因此您仍然可以使用 cost 来显示该值)。

您可以在将项目添加到索引之前在 C# 上计算此值(使用 Double.MinValueDouble.MaxValue)。

它可能不是绝对面向未来的,但如果由于新的更高价格出现新桶,您可以随时进行调整。

这样您就可以通过事先了解您可能生成的桶并相应地提升来简化函数。

震级函数有一个 constantBoostBeyondRange 如果它也超过了范围的末端,你可以使用它。