Azure搜索-按表达式排序
我们想知道,Azure Search是否使下面提到的场景成为可能 让我们拥有一个包含三列的Azure搜索索引:Azure搜索-按表达式排序,azure,azure-cognitive-search,Azure,Azure Cognitive Search,我们想知道,Azure Search是否使下面提到的场景成为可能 让我们拥有一个包含三列的Azure搜索索引: 1. Id [Edm.String] 2. Tags [Collection(Edm.String)] 3. MaxScore [Edm.Int32] 该索引包含以下两个条目: Id Tags MaxScore 1 Paris,London,Rome 30 2 Paris 10 我们还有一个评分配置文件和
1. Id [Edm.String]
2. Tags [Collection(Edm.String)]
3. MaxScore [Edm.Int32]
该索引包含以下两个条目:
Id Tags MaxScore
1 Paris,London,Rome 30
2 Paris 10
我们还有一个评分配置文件和一个Tag类型的评分函数(总和,线性),该函数将每个标签评估10分(boost=10)
我们希望在此索引中搜索标记为“Paris,London”的记录,并根据符合性百分比对其进行排序,而100%是MaxScore列中的值
问题在于,默认情况下,Azure Search按分数对记录进行排序。因此,结果如下:
Id Tags MaxScore Score %
1 Paris,London,Rome 30 20 67%
2 Paris 10 10 100%
但是我们需要按[%]列按降序对记录进行排序。这将足以使Azure搜索按表达式对记录进行排序成为可能。在我们的例子中,它类似于$orderby=score*(100/MaxScore)。然而,目前这是不可能的
谢谢。Azure Search目前不支持此方案。请考虑在我们的网站中添加一个项目,用于支持<代码> $OrdBue<代码>中的表达式。另外,请投票支持在
$orderby
中明确按分数排序。我根据日期列进行排序,希望这可能会有所帮助。
在这里,如果需要,我将使用.NETSDK,RESTAPI中也提供了相同的选项
public async Task<DocumentSearchResult<Documents>> FileSearchResultsAsync(SearchRequest searchRequest)
{
try
{
SearchParameters sp = new SearchParameters()
{
SearchMode = SearchMode.Any,
Facets = new List<String>() { "state,count:25,sort:value",
"fileType,count:25,sort:value"
},
Top = 10,
Skip = searchRequest.PageNumber > 1 ? searchRequest.PageNumber * 10 : 0,
OrderBy = searchRequest.SortOrder == SortOrder.Recent ? new List<string> { "pubDate desc" } : new List<string> { "" },
IncludeTotalResultCount = true,
Select = new List<string>
{
"fileName",
"state",
"fileType",
"pubDate"
},
Filter = BuildFacetFilter(searchRequest)
};
return await searchConfig.IndexClient.Documents.SearchAsync<Documents>(searchRequest.SearchQuery, sp);
}
catch (Exception)
{
throw;
}
}
public异步任务文件searchresultsasync(SearchRequest SearchRequest)
{
尝试
{
SearchParameters sp=新的SearchParameters()
{
SearchMode=SearchMode.Any,
Facets=newlist(){“state,count:25,sort:value”,
文件类型,计数:25,排序:值
},
Top=10,
Skip=searchRequest.PageNumber>1?searchRequest.PageNumber*10:0,
OrderBy=searchRequest.SortOrder==SortOrder.Recent?新列表{“pubDate desc”}:新列表{“},
IncludeTotalResultCount=真,
选择=新列表
{
“文件名”,
“国家”,
“文件类型”,
“发布日期”
},
Filter=BuildFacetFilter(searchRequest)
};
返回await searchConfig.IndexClient.Documents.SearchAsync(searchRequest.SearchQuery,sp);
}
捕获(例外)
{
投掷;
}
}