使用 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" }
]
答案 0 :(得分:0)
您不需要只使用一个字段来解决它,您可以创建第二个字段作为原始字段的副本,您可以在其中使用默认分析器。然后,在搜索时,您将在两个字段中进行搜索。