标签: azure-search
我正在构建一个可以搜索游戏玩家的应用程序。我的过滤器如下:
var filter = $“(Game / any(x:search.in(x,'{string.Join(” |“,query.Games)}','|'))))”;
游戏属性是一个Edm.Collection,如果在查询中按下了游戏中的一个或多个单词,则游戏列表中应该有一个匹配项。在大多数情况下,这都可以正常工作。但是,如果其中一个游戏包含'(ping),则不会。 Ping不是一个特殊字符,应该如何将其转义?
答案 0 :(得分:0)
单引号是OData过滤器语法中的保留字符。单引号(')用于分隔过滤器表达式中使用的文字。要解决此问题,您可以在游戏名称中添加一个单引号,并且该单引号将被解释为文本中的引号。
例如如果您有名为 ga'me2 的游戏,则可以在过滤器中使用它,如下所示。
$filter=Game/any(x: search.in(x, 'game1, ga''me2')
对于您的情况,您可能需要对每个游戏名称进行字符串替换。