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 我们还有一个评分配置文件和

我们想知道,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
我们还有一个评分配置文件和一个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);
}
捕获(例外)
{
投掷;
}
}