我使用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语法