【发布时间】:2022-04-12 03:00:08
【问题描述】:
使用 Azure 搜索,我希望人们能够找到与其输入相匹配的文件,即使他们忘记了连字符“-”或将其替换为空格“”。
例如,我有一个文档,其中包含以下内容:“F-150”。 我希望搜索返回以下搜索的结果:“F-150”、“F150”和“F 150”。
默认情况下,Azure 搜索将与“F-150”和“F 150”匹配,因为它将连字符“-”视为术语中的拆分,就像空格一样。但它与组合词“F150”不匹配。
为了解决这个问题,我们在搜索中添加了一个字符过滤器,将连字符替换为空。
"charFilters": [
{
"name":"replace hyphen character",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["-=>"]
}
]
使用它后,它现在匹配“F150”术语并且仍然匹配“F-150”,但现在不再匹配“F 150”。
我也尝试添加这个过滤器来尝试替换空格:
{
"name":"replace space character",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["\\u0020=>"]
}
但这似乎没有任何帮助。
所以现在我陷入了困境,想知道是否有解决这个问题的方法?
更新
所以我创建了 2 个名为“ModelEdited”和“TypeEdited”的新字段,它们与“Model”和“Type”字段具有相同的设置,只是这些编辑的字段使用“替换连字符”作为分析器。这行得通。
"fieldMappings":[
{ "sourceFieldName" : "Model", "targetFieldName" : "ModelEdited" },
{ "sourceFieldName" : "Type", "targetFieldName" : "Typedited" }
]
【问题讨论】:
标签: azure azure-cognitive-search