c# - 如何在 Azure 搜索 SDK 中的关键字之间指定 AND 和 OR 搜索?
问题描述
我正在开发一个 Azure 函数,它调用 Azure 搜索,根据一些关键字获取搜索结果,然后将其发送回前端应用程序。我的 Azure 搜索数据源(Azure 表)中有一个可搜索的列。它包含逗号分隔的字符串和关键字,如
- 数字、技术、3D
- 数字、技术、增强现实
- 数字、制造、化工
- 数字、制造、医药
现在我希望进行如下搜索:
- (数字、技术、3D)或(数字、制造、化学品)
这应该让我获取列值为的所有记录
- 数字、技术、3D
- 数字、制造、化工
我无法实现这一点。我知道 SearchMode.Any 和 SearchMode.All 但我无法找出如何在上述两组之间实现 OR。
解决方案
由于您的目标是查询精确匹配,因此您应该使用 OData 过滤器而不是搜索查询。您可以像这样使用 .NET SDK 执行此操作(假设您的可过滤字段名称称为“类别”):
string filter = "Categories eq 'Digital, Technology, 3D' or Categories eq 'Digital, Manufacturing, Chemicals'";
var params = new SearchParameters() { Filter = filter };
var result = indexClient.Documents.Search("*", params);
推荐阅读
- python - PySimpleGUI 中 InputText 的 Read() 方法仅读取具有可变布局的最后一行
- python-3.x - Scrapy 使用转义字符更改 multipart/form-data 中的某些字符
- php - 标头位置不起作用inventory_id 有空错误
- sql-server - SQL Server:varchar 的标识和自动增量
- go - 模式不匹配任何文件
- php - 如何在同一页面中有 2 个不同的元数据到 2 个图像?
- processing - 原生草图和在线草图之间的不同处理渲染
- html - 区分菜单中的最后一个元素
- c++ - 如何循环一个类变量数组?
- java - 如何正确地从双循环链表中删除元素?