【发布时间】:2017-02-26 08:53:54
【问题描述】:
我们有一个 azure Web 应用程序,其中有一个搜索框,当我们输入带有双引号的文本时,例如“App Service”,它会列出带有“App service”的记录,但它还包括在单词之间有特殊字符的记录,例如“应用程序/服务”。我们希望搜索引擎返回与搜索词组完全匹配的记录(不包括在搜索词之间具有特殊字符的记录)。
【问题讨论】:
标签: c# azure azure-cognitive-search
我们有一个 azure Web 应用程序,其中有一个搜索框,当我们输入带有双引号的文本时,例如“App Service”,它会列出带有“App service”的记录,但它还包括在单词之间有特殊字符的记录,例如“应用程序/服务”。我们希望搜索引擎返回与搜索词组完全匹配的记录(不包括在搜索词之间具有特殊字符的记录)。
【问题讨论】:
标签: c# azure azure-cognitive-search
在您的情况下,standard 分析器在索引时将术语 App/Service 分解为两个单独的术语 app 和 service。这就是短语“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?
【讨论】:
在这种情况下,您希望将字段的全部内容索引为单个标记。看看Custom Analyzers in Azure Search,尤其是keyword 分析器。
【讨论】: