Azuresearch search.in功能无法正常运行

时间:2018-10-25 20:05:56

标签: odata azure-search

试图弄清楚为什么以下过滤器返回不同结果的原因。

根据docs,我应该可以将and or条件与search in函数一起使用

  

search.in(f,'a,b,c')在语义上等同于f eq'a'或f eq   'b'或feq'c',不同之处在于当   值很大。

但是以下过滤器返回不同的结果。但是为什么呢?

   // Returns nothing
   $count=true&$filter=companyGroupId eq 1595 and search.in(companyName, 'Sky Blue, Green Ice')

但是如果我这样做的话

   // Returns expected results
    $count=true&$filter=companyGroupId eq 1595 and (companyName eq 'Sky Blue' or companyName eq 'Green Ice')

为什么结果对我来说如此不同,似乎它们应该是相同的。

我的CompanyName属性看起来像这样

[IsFilterable]
[IsSortable]
[IsFacetable]
public string CompanyName { get; set; }

1 个答案:

答案 0 :(得分:1)

由于search.in解析第二个参数的方式,它们是不同的。由于您的值中包含空格,因此您需要将自己的分隔符指定为search.in的第三个参数。默认行为是使用空格和逗号分隔。尝试以下方法:

search.in(companyName, 'Sky Blue|Green Ice', '|')

您还可以找到其他使用search.in here的示例。