根据AzureSearch中的某些参数确定搜索结果的优先级。

时间:2017-02-24 10:38:46

标签: azure-search azure-search-.net-sdk

我在AzureSearch上有一个与此类似的索引:

"fields": [
    {
        "name": "key",
        "type": "Edm.String",
        "filterable": true,
    },
    {
        "name": "title",
        "type": "Edm.String",
        "searchable": true
    },
    {
        "name": "followers",
        "type": "Collection(Edm.String)",
        "filterable": true,
    }
]

此处,title是帖子的标题及其文本可搜索。 followers包含关注该特定帖子的用户的用户ID。

我从会话中获取当前登录的userId。现在,当用户进行一些文本搜索时,我想在当前用户关注的顶部显示这些帖子。

请使用ScoringProfiles或其他任何内容判断AzureSearch中是否可以实现这一点?

1 个答案:

答案 0 :(得分:1)

ScoringProfile中的标签提升正是如此。您需要做的就是添加评分档案,如下所示:

{
  "scoringProfiles": [
  {
    "name": "personalized",
    "functions": [
    {
      "type": "tag",
      "boost": 2,
      "fieldName": "followers",
      "tag": { "tagsParameter": "follower" }
    }
    ]
  }
  ]
}

然后,在查询时,使用带有参数的评分配置文件发出搜索查询以自定义排名:

docs?search = some%20post&& scoringProfile = personalized& scoringParameter = follower:user_abc

希望这会有所帮助。你可以在这里读更多关于它的内容。 https://azure.microsoft.com/en-us/blog/personalizing-search-results-announcing-tag-boosting-in-azure-search/

内特