Azure搜索突出显示不适用于具有评分配置文件的通配符

时间:2019-02-28 03:01:17

标签: azure-search hit-highlighting

Azure Search支持使用全文本搜索突出显示,这有助于客户在返回的文档中找到匹配的术语。我在下面提供了一个简单的索引架构来说明问题。

{
"name": "simple-index", 
"fields": [
    {
        "name": "key",
        "type": "Edm.String"
    },
    {
        "name": "simplefield",
        "type": "Edm.String"
    }
],
"scoringProfiles": [
    {
        "name": "boostedprofile",
        "functionAggregation": null,
        "text": {
            "weights": {
                "simplefield": 5,
            }
        },
        "functions": []
    }
],
"corsOptions": null,
"suggesters": [],
"analyzers": [],
"tokenizers": [],
"tokenFilters": [],
"charFilters": []
}

对于如下所示的常规搜索查询,它可以按预期方式工作并返回预期结果。

  

search=foobar&highlight=simplefield

在将上述查询扩展为使用通配符查询时,响应将在包含与前缀匹配的术语上突出显示的内容再次按预期进行。到目前为止一切顺利。

  

search=foo*&highlight=simplefield&querytype=full

此后,当我在上一个查询的顶部应用评分配置文件时,结果是意外的,并且不返回任何突出显示。

  

search=foo*&highlight=simplefield&querytype=full&scoringprofile=boostedprofile

使用评分配置文件时,如何使突出显示适用于通配符查询?

1 个答案:

答案 0 :(得分:2)

在回答时,这是 Azure搜索中的一个已知限制,其中与得分配置文件一起使用时,突出显示不适用于通配符查询。在内部,Azure搜索使用荧光笔的概念,荧光笔作为在搜索后发生的单独过程来负责突出显示流程。

对于通配符查询,它涉及在索引中查找与提供的前缀术语匹配的所有术语,然后使用它们来组成突出显示的文本。评分配置文件会影响在索引中查找单词以突出显示的方式。因此,结果不包含任何突出显示。

由于这是通配符查询中的特定限制,因此一种解决方法是对索引进行预处理,以避免发出通配符/前缀查询。请看一下自定义分析(https://docs.microsoft.com/en-us/rest/api/searchservice/custom-analyzers-in-azure-search)。例如,您可以使用edgeNgram令牌过滤器并在索引中存储单词的前缀,然后使用前缀(不带'*'运算符)发出常规词查询< / p>

我希望这是有用的。请对反馈项进行投票,以帮助我们优先考虑开发工作,以支持将支持上述用例的其他突出显示模式。 https://feedback.azure.com/forums/263029-azure-search/suggestions/32661961-implement-other-highlighters