我们正在使用 .net 库进行 azure 搜索,我已成功构建索引并将数据存储在索引中。我们的一个字段称为标签,它是字符串的集合,它被标记为可搜索。因此,我们将值放在此字段中,例如 C# .NET。
问题是当搜索搜索服务时不会在 C# 上命中,它会在 C 上,也不会在 .NET 上命中,但会在 NET 上。我可以通过 fiddler 看到搜索词正在编码 # 和 .,但它似乎并没有在 azure 端被解码。
我们正在使用 .net 库进行 azure 搜索,我已成功构建索引并将数据存储在索引中。我们的一个字段称为标签,它是字符串的集合,它被标记为可搜索。因此,我们将值放在此字段中,例如 C# .NET。
问题是当搜索搜索服务时不会在 C# 上命中,它会在 C 上,也不会在 .NET 上命中,但会在 NET 上。我可以通过 fiddler 看到搜索词正在编码 # 和 .,但它似乎并没有在 azure 端被解码。
谢谢布鲁斯,现在我刚刚在我们的搜索实现中创建了一个函数,它可以从最终用户提供的搜索词中删除标点符号。这样我就不必遍历并更新所有搜索索引/记录。
private string SanitizeValue(string value)
{
return Regex.Replace(value, @"[^a-zA-Z0-9\s]", "");
}
您可以尝试使用正则表达式搜索,例如搜索此字符串:/.*c\#.*/
。还要确保你设置了SearchParameters.QueryType = QueryType.Full
.