在 Azure 认知搜索中,如何匹配其中包含连字符的字段?
In Azure Cognitive Search how do you match on fields with a hyphen in it?
使用 Azure 搜索我想让人们找到与其输入匹配的文件,即使他们忘记了连字符“-”或用 space“”代替它。
例如,我有一份文件,其中包含以下内容:“F-150”。
我希望在以下搜索中获得 return 结果:“F-150”、“F150”和“F 150”。
默认情况下,Azure 搜索将匹配“F-150”和“F 150”,因为它将连字符“-”视为术语中的拆分,就像 space 一样。但它与组合术语“F150”不匹配。
为了解决这个问题,在搜索中添加了一个 charfilter,用空字符替换连字符。
"charFilters": [
{
"name":"replace hyphen character",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["-=>"]
}
]
使用它之后,它现在与“F150”术语匹配,并且仍然与“F-150”匹配,但现在它不再与“F 150”匹配。
我也尝试添加这个过滤器来尝试替换 space:
{
"name":"replace space character",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["\u0020=>"]
}
但这似乎无济于事。
所以我现在卡住了,想知道是否有办法解决这个问题?
更新
所以我创建了 2 个名为“ModelEdited”和“TypeEdited”的新字段,它们与“Model”和“Type”字段具有相同的设置,只是这些编辑的字段使用“replace hyphen”作为分析器。行得通。
"fieldMappings":[
{ "sourceFieldName" : "Model", "targetFieldName" : "ModelEdited" },
{ "sourceFieldName" : "Type", "targetFieldName" : "Typedited" }
]
您不需要只使用一个字段来解决它,您可以创建第二个字段作为原始字段的副本,您可以在其中使用默认分析器。然后,在搜索时,您将在两个字段中进行搜索。
使用 Azure 搜索我想让人们找到与其输入匹配的文件,即使他们忘记了连字符“-”或用 space“”代替它。
例如,我有一份文件,其中包含以下内容:“F-150”。 我希望在以下搜索中获得 return 结果:“F-150”、“F150”和“F 150”。
默认情况下,Azure 搜索将匹配“F-150”和“F 150”,因为它将连字符“-”视为术语中的拆分,就像 space 一样。但它与组合术语“F150”不匹配。
为了解决这个问题,在搜索中添加了一个 charfilter,用空字符替换连字符。
"charFilters": [
{
"name":"replace hyphen character",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["-=>"]
}
]
使用它之后,它现在与“F150”术语匹配,并且仍然与“F-150”匹配,但现在它不再与“F 150”匹配。
我也尝试添加这个过滤器来尝试替换 space:
{
"name":"replace space character",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["\u0020=>"]
}
但这似乎无济于事。
所以我现在卡住了,想知道是否有办法解决这个问题?
更新
所以我创建了 2 个名为“ModelEdited”和“TypeEdited”的新字段,它们与“Model”和“Type”字段具有相同的设置,只是这些编辑的字段使用“replace hyphen”作为分析器。行得通。
"fieldMappings":[
{ "sourceFieldName" : "Model", "targetFieldName" : "ModelEdited" },
{ "sourceFieldName" : "Type", "targetFieldName" : "Typedited" }
]
您不需要只使用一个字段来解决它,您可以创建第二个字段作为原始字段的副本,您可以在其中使用默认分析器。然后,在搜索时,您将在两个字段中进行搜索。