因此,Nate 提供的答案很难理解,并且遗漏了一些组件。一世
对整个评分过程进行了概述,并且相当复杂。
因此,当用户执行搜索时,会向 Azure 搜索提供 query。 Azure 搜索使用TF-IDF 算法根据分析器形成的Tokens 确定0-1 的分数。请记住,特定于语言的分析器可以为一个单词提供多个标记。对于每个可搜索字段,将生成分数,然后根据评分配置文件中的权重生成multiplied。最后将所有加权分数相加,这就是初始加权分数。
评分配置文件还可能包含评分功能。评分函数可以是幅度、新鲜度、地理或基于标签的函数。可以在一个评分配置文件中实现多种功能。
函数将被评估,函数的分数可以求和,也可以取平均值、最小值、最大值或第一次匹配。然后将所有函数的总和乘以总加权分数,这就是最终分数。
一个示例,这是一个带有评分配置文件的示例索引。
{
"name": "musicstoreindex",
"fields": [
{ "name": "key", "type": "Edm.String", "key": true },
{ "name": "albumTitle", "type": "Edm.String" },
{ "name": "genre", "type": "Edm.String" },
{ "name": "genreDescription", "type": "Edm.String", "filterable": false },
{ "name": "artistName", "type": "Edm.String" },
{ "name": "rating", "type": "Edm.Int32" },
{ "name": "price", "type": "Edm.Double", "filterable": false },
{ "name": "lastUpdated", "type": "Edm.DateTimeOffset" }
],
"scoringProfiles": [
{
"name": "boostGenre",
"text": {
"weights": {
"albumTitle": 1.5,
"genre": 5,
"artistName": 2
}
}
},
{
"name": "newAndHighlyRated",
"functions": [
{
"type": "freshness",
"fieldName": "lastUpdated",
"boost": 10,
"interpolation": "linear",
"freshness": {
"boostingDuration": "P365D"
}
},
{
"type": "magnitude",
"fieldName": "rating",
"boost": 8,
"interpolation": "linear",
"magnitude": {
"boostingRangeStart": 1,
"boostingRangeEnd": 5,
"constantBoostBeyondRange": false
}
}
],
"functionAggregation": 0
}
]
}
假设输入的查询是meteora Linkin Park 的著名专辑。假设我们的索引中有以下文档。
{
"key": 123,
"albumTitle": "Meteora",
"genre": "Rock",
"genreDescription": "Rock with a flick of hiphop",
"artistName": "Linkin Park",
"rating": 4,
"price": 30,
"lastUpdated": "2020-01-01"
}
我不是 TF-IDF 方面的专家,但我可以想象会产生以下未加权分数:
{
"albumTitle": 1,
"genre": 0,
"genreDescription": 0,
"artistName": 0
}
评分资料在专辑标题字段中的权重为 1.5,因此总加权分数将为:1 * 1.5 + 0 + 0 + 0 = 1.5
之后将评估评分配置文件功能。在这种情况下,有 2 个。第一个评估新鲜度,范围为 365 天,一年。最后更新的字段的值为今年 4 月 1 日。可以说那是从现在开始的 50 天。总范围为 365,因此如果最后更新日期是今天,您将获得 1 分。如果过去 365 天或更长时间,则为 0。在我们的例子中是1 - 50 / 365 = 0.8630..。函数的提升是10,所以第一个函数的得分是8.630。
第二个函数是幅度函数,范围从 1 到 5。该文档获得 4 星评级,因此得分为 0.8,因为 1 星是 0,5 星是 1。所以 4 星显然是4 / 5 = 0.8。幅度函数的提升是 8,所以我们必须将值乘以 8。0.8 * 8 = 6.4。
functionAggregation 为 0,这意味着我们必须对所有函数的结果求和。给我们评分配置文件功能的总分:6.4 + 8.630 = 15.03。然后,规则是将总得分配置文件函数得分与字段的总加权得分相乘,得出总计:15.03 * 1.5 = 22.545。
希望你能采纳这个例子。