我们正在使用.net库进行azure搜索,我已经成功地在索引中构建了索引和存储数据。我们的一个字段称为标签,它是字符串的集合,并标记为可搜索。因此我们将值放在此字段中,例如C#.NET。
问题在于搜索搜索服务时不会点击C#,它会在C上,也不会在.NET上点击,但它会在.NET上。我可以通过提琴手看到搜索词正在编码#和the。,但它似乎并没有在蔚蓝的一面进行解码。
答案 0 :(得分:3)
您看到的行为是Azure搜索使用的标准分析器执行的结果标记化。默认情况下,它会打破许多标点字符,如#和。 (您可以在Azure Search here中获取文本分析的所有详细信息。)
我们正在考虑添加对custom analyzers的支持,以便您排除#和等字符。从破纪录,但这仍然在规划阶段。与此同时,作为一种解决方法,我们建议在索引和查询之前在应用程序中对这些字符进行编码(例如 - C# - > CSharp,.NET - > dotNET)。
答案 1 :(得分:1)
感谢Bruce,现在我刚刚在我们的搜索实现中创建了一个函数,用于从最终用户提供的搜索项中删除标点符号。这样我就不必通过并更新所有搜索索引/记录。
private string SanitizeValue(string value)
{
return Regex.Replace(value, @"[^a-zA-Z0-9\s]", "");
}
答案 2 :(得分:0)
您可以尝试使用正则表达式搜索,例如搜索以下字符串:/.*c\#.*/
。另外,请确保您设置了SearchParameters.QueryType = QueryType.Full
。