【问题标题】:How do I change the range of a field?如何更改字段的范围?
【发布时间】:2016-04-06 00:27:19
【问题描述】:

我正在试验 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 搜索是否有这样的常量可用。我也不确定我是否可以在我的得分配置文件范围内使用负数。

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

【问题讨论】:

    标签: azure-cognitive-search


    【解决方案1】:

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

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

    它可能不是绝对经得起未来考验的,但如果由于新的更高价格而出现新的存储桶,您可以随时进行调整。

    通过这种方式,您可以通过事先了解您可能生成的存储桶并相应地提升来简化函数。

    幅度函数有一个constantBoostBeyondRange,如果它也超出范围的末尾,您可以使用它。

    【讨论】:

    • 感谢您的回复。我尝试了constantBoostBeyondRange 标志,但是我不明白。假设我将该标志设置为true,并且我有成本为 1.00 美元、3.00 美元、5.00 美元、7.00 美元和 10.00 美元的商品。现在,假设我的 boostingRangeStart 是 3.00,而我的 boostingRangeEnd 是 7.00。我假设成本为 3.00 美元、5.00 美元和 7.00 美元的结果会得到提升。但是,成本为 1.00 美元和 10.00 美元的结果如何呢?他们在提升过程中被忽略了吗? 1.00 美元和 10.00 美元是否还会上涨?一个比另一个提升更多吗? 10.00 美元是否会上涨但 1.00 美元不会上涨?
    • 简而言之,我不明白constantBoostBeyondRange 标志的影响是什么或它的作用。感谢您的帮助。
    • Taken form the docs: 当设置为 true 时,完全提升将继续应用于目标字段值高于范围上限的文档。如果为 false,则此函数的提升将不会应用于目标字段的值超出范围的文档。
    • 我已经看到了,但我不确定文档是否正确。这意味着在我展示的示例中,10.00 美元会增加,但 1.00 美元不会。你是这样阅读文档的吗?
    • 我理解同样的事情,并且认为关键是如果您定义一个具有不同评分的多个幅度范围的自定义评分,这将在“if”语句中充当“else”。跨度>
    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 2019-04-13
    • 2017-08-02
    • 2016-08-25
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2020-05-17
    相关资源
    最近更新 更多