首页 > 解决方案 > 使用 Azure 搜索在特定字段中搜索特定值

问题描述

我有我的数据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'

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

在我的代码中,我有

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);

谢谢。

标签: azure-cognitive-search

解决方案


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

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

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

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


推荐阅读