SEG*_*tra 3 c# search azure azure-cognitive-search
我正在从c#应用程序调用Azure搜索。
当我尝试过滤产品的类别时,只有在类别不包含任何空格时,它才会给我结果。
search.in(ProductCategory,'Garden') // Works
search.in(ProductCategory,'Sport and Games') // Doesn't Work
search.in(ProductCategory,'Garden, Sport and Games') // Only shows 'Garden' results
Run Code Online (Sandbox Code Playgroud)
该文档显示可以使用空格,因此我想知道为什么在使用空格时没有得到任何结果。
$filter=search.in(name, 'Roach motel, Budget hotel') // Sample from docs
Run Code Online (Sandbox Code Playgroud)
它还指出search.in(field, 'one,two,three')等于field eq 'one' or field eq 'two' or field eq 'three'。但是当我在我的情况下使用它时,ProductCategory eq 'Sport and Games'它就可以工作。
因此,我认为它们之间存在某种差异。但我不知道这是什么。我首先认为这可能与ProductCategory不可搜索的字段有关,但另一方面,它适用于非空间类别。另外,如果它的作用类似于eg过滤器,则不是搜索,是吧。
谁能解释其中的区别?
现在,我只是创建不带搜索的过滤器,仅创建一个过滤器,ProductCategory eq 'Sport and Games or ...'但是当有人选择很多类别时,这可能会变得很长。
问题是,如果不指定定界符,则search.in假定空格和逗号是定界符。由于值中包含空格,因此您需要指定自己的定界符参数。例如,假设您的值不包含逗号,则可以执行以下操作:
$filter=search.in(ProductCategory, 'Garden,Sport and Games', ',')
Run Code Online (Sandbox Code Playgroud)
请注意,Garden之后的逗号后没有空格。
通常,如果这些字符出现在文字值中,则不能使用字符作为分隔符。
您从我们的文档中提到的示例不正确。我们将确保它得到修复。对困惑感到抱歉。
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |