Odata Azuresearch.in功能未按预期工作

Odata Azuresearch.in功能未按预期工作,odata,azure-cognitive-search,Odata,Azure Cognitive Search,试图找出以下筛选器返回不同结果的原因 根据中的搜索功能,我应该能够使用和/或条件 在(f,'a,b,c')中,search在语义上等同于f eq'a'或f eq “b”或f eq“c”,除了当 价值是巨大的 但是下面的过滤器返回不同的结果。但是为什么呢 // Returns nothing $count=true&$filter=companyGroupId eq 1595 and search.in(companyName, 'Sky Blue, Green Ice')

试图找出以下筛选器返回不同结果的原因

根据中的搜索功能,我应该能够使用
和/或
条件

在(f,'a,b,c')中,search在语义上等同于f eq'a'或f eq “b”或f eq“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; }

它们的不同之处在于
搜索的方式。in
解析第二个参数。由于值中有空格,因此需要指定自己的分隔符作为
search.in
的第三个参数。默认行为是在空格和逗号上断开。请尝试以下方法:

search.in(公司名称,'Sky Blue | Green Ice','|')


您可以找到使用
搜索的其他示例。在

中,由于
搜索的方式不同,它们是不同的。在
中解析第二个参数。由于值中有空格,因此需要指定自己的分隔符作为
search.in
的第三个参数。默认行为是在空格和逗号上断开。请尝试以下方法:

search.in(公司名称,'Sky Blue | Green Ice','|')


您可以在

中找到使用
搜索的其他示例,这是正确的,但是search.in是否应该处理括号?那么search.in过滤器应该是什么样子呢$count=true&$filter=companyGroupId eq 1595和(search.in(companyName,'Sky Blue,Green Ice'))?因为这也不起作用,我在第二个过滤器周围加了括号。但是正如我在上面的评论中提到的,search.in result没有返回任何内容,对我来说,这两个查询应该是相同的结果。@R4nc1d由于我遗漏了第二个问题,paren没有解决这个问题。我更新了我的答案以反映这一点。让我知道它是否有用。这是真的,但是search.in是否应该处理括号?那么search.in过滤器应该是什么样子呢$count=true&$filter=companyGroupId eq 1595和(search.in(companyName,'Sky Blue,Green Ice'))?因为这也不起作用,我在第二个过滤器周围加了括号。但是正如我在上面的评论中提到的,search.in result没有返回任何内容,对我来说,这两个查询应该是相同的结果。@R4nc1d由于我遗漏了第二个问题,paren没有解决这个问题。我更新了我的答案以反映这一点。如果有帮助,请告诉我。