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



我使用Azure Cognitive Search来为我托管Lucene搜索,并且我使用c#接口来处理大多数事情。

我索引的文档有几个布尔字段。使用"Full"搜索语法您可以使用语法MyField:"value"或' MyField:("value1", "value2")搜索单个字段。

但是我不能弄清楚的是如何搜索布尔字段。例如:MyBooleanField:"True"does not work, nor doesMyBooleanField:"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; }
}

你们有人明白了吗?

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

GET/索引(myindex)/文档吗?$filter=MyBooleanField eq true&api-version=2020-06-30

使用。net SDK,您可以将SearchOptions的Filter属性设置为OData过滤器表达式,在本例中为"MyBooleanField eq true"

布尔字段是不可搜索的,所以你不能在你的搜索表达式中引用它们。

相反,应该使用过滤来缩小搜索结果的范围。在您的例子中,语法应该是:

$filter=MyBooleanField eq true 

这个链接也有一些额外的细节和有用的例子:Azure认知搜索中的OData $filter语法

最新更新