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
使用评分配置文件时,如何使突出显示适用于通配符查询?
答案 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