了解 azure search charFilters 映射
understand azure search charFilters mapping
我使用以下自定义分析器创建索引
"analyzers":[
{
"name":"shinglewhite_analyzer",
"@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
"charFilters":[
"map_dash"
],
"tokenizer":"whitespace",
"tokenFilters":[
"shingle"
]
}
],
"charFilters":[
{
"name":"map_dash",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":[ "_=> " ]
}
]
问题是输入中的 ice_cream 之类的词不会匹配查询冰淇淋,但它会匹配冰淇淋。谁能帮助我了解这是如何工作的,如果我做错了什么?
我们还希望查询 "ice cream" 以匹配 "ice cream"、"icecream" 和 "ice and cream",但按顺序优先匹配。
为了映射到 space,请使用以下符号(我们将更新文档以包含此信息):
{
"name":"map_dash",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":[ "_=>\u0020" ]
}
此外,默认情况下,shingle 标记过滤器使用 space 分隔标记。如果您想在没有分隔符的情况下将后续标记合并为一个标记,则需要像以下示例一样自定义您的过滤器:
{
"name": "my_shingle",
"@odata.type":"#Microsoft.Azure.Search.ShingleTokenFilter",
"tokenSeparator": ""
}
通过令牌 ice_cream 的这两个更改,您的分析器将生成:冰、冰淇淋、奶油。
希望对你有所帮助
我使用以下自定义分析器创建索引
"analyzers":[
{
"name":"shinglewhite_analyzer",
"@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
"charFilters":[
"map_dash"
],
"tokenizer":"whitespace",
"tokenFilters":[
"shingle"
]
}
],
"charFilters":[
{
"name":"map_dash",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":[ "_=> " ]
}
]
问题是输入中的 ice_cream 之类的词不会匹配查询冰淇淋,但它会匹配冰淇淋。谁能帮助我了解这是如何工作的,如果我做错了什么?
我们还希望查询 "ice cream" 以匹配 "ice cream"、"icecream" 和 "ice and cream",但按顺序优先匹配。
为了映射到 space,请使用以下符号(我们将更新文档以包含此信息):
{
"name":"map_dash",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":[ "_=>\u0020" ]
}
此外,默认情况下,shingle 标记过滤器使用 space 分隔标记。如果您想在没有分隔符的情况下将后续标记合并为一个标记,则需要像以下示例一样自定义您的过滤器:
{
"name": "my_shingle",
"@odata.type":"#Microsoft.Azure.Search.ShingleTokenFilter",
"tokenSeparator": ""
}
通过令牌 ice_cream 的这两个更改,您的分析器将生成:冰、冰淇淋、奶油。
希望对你有所帮助