azure-cognitive-search - 使用 Azure 搜索在特定字段中搜索特定值
问题描述
我有我的数据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'
结果我收到了所有记录。我阅读了 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);
谢谢。
解决方案
过滤器的语法与全文搜索不同。过滤器使用 OData 语法。此处记录了 Azure 搜索支持的 OData 子集。
您要执行的过滤器在 OData 语法中如下所示:
Type eq 'private:Text' and memberOf/any(m: m eq 'my.com/field/F001')
注意any
和 lambda 表达式的使用,因为memberOf
它是一个集合字段。
推荐阅读
- google-smart-home - StatusReport google home trait 的积极场景使用
- google-tag-manager - gtm 上的函数调用是否可用于向 Clevertap 发送事件?
- python - 通过循环遍历函数名称列表并使它们成为变量,从模块中调用许多 python 函数
- javascript - 如何在反应导航中将函数/方法作为参数传递。导航
- python - 使用具有 500k 行数据的 pandas read_sql 时出现内存错误
- sql - 从汽车列表中提取年份。如何从带有文本和其他数字的字符串中获取四位数字
- javascript - 该元素不会接受 textContent 输入
- php - 我想使用 forEach 或 PHP 中的循环在一个数组中的多个对象中获取特定值
- css - Hexo 无法加载样式表
- python - 使用通用格式将浮点数转换为字符串时如何抑制科学记数法?