【问题标题】:Azure Cognitive Search with boolean field带有布尔字段的 Azure 认知搜索
【发布时间】:2021-11-26 22:28:22
【问题描述】:

我使用 Azure 认知搜索基本上为我托管 Lucene 搜索,并且我使用 C# 接口处理大多数事情。

我正在索引的文档有几个布尔字段。使用“完整”搜索语法,您可以使用语法 MyField:"value" 或 `MyField:("value1", "value2") 搜索单个字段。

但我不知道如何搜索布尔字段。例如:MyBooleanField:"True" 不起作用,MyBooleanField:"true" 也不起作用。

我的错误是:Illegal arguments in query request: MyBooleanField is not a searchable field

类是这样定义的:

public class MyDocument 
{
    [SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
    public bool MyBooleanField { get; set; }
}

你们有没有想过这个问题?

【问题讨论】:

    标签: azure-cognitive-search


    【解决方案1】:

    布尔字段不可全文搜索。您可以使用过滤器来匹配它们:

    GET /indexes('myindex')/docs?$filter=MyBooleanField eq true&api-version=2020-06-30

    使用 .NET SDK,您可以将SearchOptions 上的Filter 属性设置为OData filter expression,在本例中为"MyBooleanField eq true"

    【讨论】:

      【解决方案2】:

      布尔字段不可搜索,因此您无法在搜索表达式中引用它们。

      相反,您应该使用filtering 来缩小搜索结果的范围。在你的情况下,语法是:

      $filter=MyBooleanField eq true 
      

      此链接还包含一些其他详细信息和有用的示例: OData $filter syntax in Azure Cognitive Search

      【讨论】:

        猜你喜欢
        • 2022-11-03
        • 1970-01-01
        • 2021-10-13
        • 2021-10-18
        • 2020-03-27
        • 1970-01-01
        • 2022-12-17
        • 2019-01-20
        • 2021-06-06
        相关资源
        最近更新 更多