使用 Azure 搜索在特定字段中搜索特定值
Search specific value in specific field with Azure Search
我的数据在 Azure Search
。在我的结构中有很多字段,我必须使用其中两个来过滤或搜索。
一个是Type
,定义为Edm.String
,另一个是memberOf
,定义为Collection(Edm.String)
。
Type
的值类似于 private:Text
,memberOf
的值类似于 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
是一个集合字段。
我的数据在 Azure Search
。在我的结构中有很多字段,我必须使用其中两个来过滤或搜索。
一个是Type
,定义为Edm.String
,另一个是memberOf
,定义为Collection(Edm.String)
。
Type
的值类似于 private:Text
,memberOf
的值类似于 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
是一个集合字段。