Azure搜索-用于增强结果的自定义功能

时间:2019-07-12 19:41:29

标签: azure azure-search

我正在尝试将“复杂”功能移至Azure搜索。此函数基于过滤器数据(来自搜索查询)和存储在结果元素中的数据来计算每个结果元素的得分。分数用于提高结果。根据我的研究,Azure搜索可以提高结果,但是对于我的需求来说太简单了。

示例功能:

//filterElementsIds - ids taken from search query filter
public double Score(IEnumerable<string> filterElementsIds, ResultElement element)
{
    double score = 0;

    foreach(var elem in element.ScoreForFilters)
        if (filterElementsIds.Any(x => x == elem.Key))
            score += elem.Value * 1.5;

    return score;
}

当前,我正在遍历Azure搜索返回的每个结果-计算应用程序内部的得分和排序元素。

是否可以在Azure搜索中实现此类功能以改善提升结果的过程?

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的问题,但是,如果您的某些文档的关键字等于“ filterElements”集合中的任何ID,您似乎就想提高某些文档的评分。如果是这样的话,您可以使用lucene查询语言来完成一个查询: https://docs.microsoft.com/en-us/azure/search/search-query-lucene-examples

您可以进行如下搜索

OriginalSearchTerm或(OriginalSearchTerm AND键:(“ filterID1”或“ filterID2”或“ filterID3”))

这样,既匹配原始搜索词,又具有过滤器ID之一作为“关键字”字段一部分的文档,将比仅匹配原始搜索词的文档匹配度更高。在这种情况下,您也可以将术语提升称为关键字段的特定提升 如果是这样,您是否可以使用“期限提升”来实现这一目标? https://docs.microsoft.com/en-us/azure/search/search-query-lucene-examples#example-5-term-boosting

OriginalSearchTerm或(OriginalSearchTerm AND键:(“ filterID1”或“ filterID2”或“ filterID3”)^ 2)