使用 Azure 搜索在特定字段中搜索特定值

Search specific value in specific field with Azure Search

我的数据在 Azure Search。在我的结构中有很多字段,我必须使用其中两个来过滤或搜索。

一个是Type,定义为Edm.String,另一个是memberOf,定义为Collection(Edm.String)

Type 的值类似于 private:TextmemberOf 的值类似于 my.com/field/F001.

我想应用过滤器:

filter=Type:'private:Text' AND memberOf:'my.com/field/F001'

结果我收到了所有记录。我阅读了微软的文档,但找不到解决方案。

在我的代码中有

SearchParameters sp = new SearchParameters()
{
    SearchMode = SearchMode.Any,
    Skip = currentPage - 1,
    IncludeTotalResultCount = true
};

if (!string.IsNullOrEmpty(searchQuery))
    sp.Filter = searchQuery;

DocumentSearchResult<VuSearchData> result = 
         await client.Documents.SearchAsync<VuSearchData>(searchText, sp);

谢谢。

过滤器的语法与全文搜索的语法不同。过滤器使用 OData 语法。 Azure 搜索支持的 OData 子集记录在案 here

您要执行的过滤器在 OData 语法中如下所示:

Type eq 'private:Text' and memberOf/any(m: m eq 'my.com/field/F001')

请注意 any 和 lambda 表达式的使用,因为 memberOf 是一个集合字段。