c# - 使用空格时,Azure 搜索的 search.in 不返回结果

标签 c# azure search 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

documentation显示可以使用空格,所以我想知道为什么在使用空格时没有得到任何结果。

$filter=search.in(name, 'Roach motel, Budget hotel') // Sample from docs

它还指出 search.in(field, 'one,two, Three') 等于 field eq 'one' 或 field eq 'two' 或 field eq 'third '。但当我在我的例子中使用它时,ProductCategory eq 'Sport and Games' 它就可以工作了。

所以我认为它们之间存在某种差异。但我不知道它是什么。我首先认为这可能与字段 ProductCategory 不可搜索有关,但另一方面,它适用于非空间类别。另外,如果它的行为类似于 eg 那么它是一个过滤器而不是搜索,对吧..?

谁能解释一下其中的区别吗?

<小时/>

目前,我只是创建过滤器,不进行搜索,仅创建ProductCategory eq 'Sport and Games or ...',但当有人选择很多类别时,这可能会变得很长。

最佳答案

问题是,如果您不指定分隔符,search.in 会假定空格和逗号是分隔符。由于您的值中包含空格,因此您需要指定自己的分隔符参数。例如,假设您的值不包含逗号,您可以执行以下操作:

$filter=search.in(ProductCategory, 'Garden,Sport and Games', ',')

请注意 Garden 后面的逗号后面缺少空格。

一般来说,如果这些字符出现在文字值中,则不能使用这些字符作为分隔符。

您在我们的文档中提到的示例不正确。我们将确保它得到修复。抱歉造成困惑。

关于c# - 使用空格时,Azure 搜索的 search.in 不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48163513/

相关文章:

c# - Xamarin 表格 "...DisplayAlert does not exist in the current context."

c# - 没有映射到数据操作中使用的列 'CleaningEmployees.Id' 的属性

asp.net - 我应该将 docker 与应用程序服务一起使用,而不是直接使用应用程序服务吗?

c++ - 如何检测 C++ 字符串中的 "_"?

search - 搜索引擎的相关性排名和推荐系统之间的区别

c# - 使用注册表值启动应用程序?它出什么问题了? .net 2.0 ONLY 请

c# - 我如何检查两个字符串是否包含相同的字母

azure - "count"值取决于资源属性,这些属性在应用之前无法确定,因此Terraform无法预测将创建多少个实例

azure - 如何在 Blazor Server 中捕获音频?

Python:如何找到与给定的多个模式中的任何一个匹配的所有字符串