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没有解决这个问题。我更新了我的答案以反映这一点。如果有帮助,请告诉我。