带有布尔字段的 Azure 认知搜索

Azure Cognitive Search with boolean field

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

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

搜索单个字段

但我想不通的是如何在布尔字段上进行搜索。例如:MyBooleanField:"True" 不起作用,MyBooleanField:"true".

也不起作用

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

class的定义是这样的:

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

你们有想过这个吗?

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

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

使用 .NET SDK,您可以设置 Filter property on SearchOptions to an OData filter expression,在本例中为 "MyBooleanField eq true"

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

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

$filter=MyBooleanField eq true 

这个 link 还有一些额外的细节和有用的例子: OData $filter syntax in Azure Cognitive Search