我们有一个azure web应用程序,其中有一个搜索框,当我们输入带有双引号的文本(如“App Service”)时,它会列出带有“App service”的记录,但它也包含在这些单词之间具有特殊字符的记录“应用程序/服务”。我们希望搜索引擎准确地返回与搜索短语匹配的记录(不包括搜索词之间具有特殊字符的记录)。
答案 0 :(得分:2)
在您的情况下,standard
分析器会在索引时将应用/服务这两个词分为两个单独的术语 app 和 service 。这就是“App Service”这个短语与 App / Service 匹配的原因 - 两个版本看起来与搜索引擎相同。
如果术语应用程序/服务构成字段的全部内容,则可以使用keyword
分析器将该字段的内容编入索引作为单个标记。点击此处了解详情:Custom Analyzers in Azure Search。
如果术语 App / Service 作为句子的一部分出现,keyword
分析器将不是一个好的选择。在这种情况下,您可以将/
字符替换为standard
标记生成器未分割的其他字符,例如:_
。使用mappping
字符标记过滤器:
charFilters: [
{
"name":"map_char_mapping",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":[ "/=>_" ]
}
]
以下文章将帮助您了解在搜索和索引编制时如何应用词法分析器:How to practially use a keywordanalyzer in azure-search?
答案 1 :(得分:1)
在此方案中,您希望将字段的整个内容编入索引作为单个标记。请查看Custom Analyzers in Azure Search,特别是keyword
分析器。