【问题标题】:How to specify AND and OR search between keywords in Azure Search SDK?如何在 Azure 搜索 SDK 中的关键字之间指定 AND 和 OR 搜索?
【发布时间】:2018-09-18 05:35:14
【问题描述】:

我正在开发一个 Azure 函数,它调用 Azure 搜索,根据一些关键字获取搜索结果,然后将其发送回前端应用程序。 我的 Azure 搜索数据源(Azure 表)中有一个可搜索的列。它包含逗号分隔的字符串和关键字,如

  • 数字、技术、3D
  • 数字、技术、增强现实
  • 数字化、制造、化工
  • 数字化、制造、药品

现在我想进行如下搜索:

  • (数字、技术、3D)或(数字、制造、 化学品)

它应该获取我所有列值为的记录

  • 数字、技术、3D
  • 数字化、制造、化工

我无法实现这一点。我知道 SearchMode.Any 和 SearchMode.All 但我不知道如何在上述两组之间实现 OR。

【问题讨论】:

  • 索引字段是否包含此数据filterable
  • 在这种情况下您真的需要全文搜索,还是要为每个组寻找精确匹配?
  • @GauravMantri 是的。它是可过滤的。
  • @BruceJohnston 精确匹配每个组。在插入数据时,我们确保每个组都与传入的搜索请求完全匹配。例如。搜索请求可以是(数字、技术)或(数字)或(数字、技术、3D)
  • 您可以尝试使用过滤查询:docs.microsoft.com/en-us/rest/api/searchservice/…

标签: c# azure azure-table-storage azure-cognitive-search azure-search-.net-sdk


【解决方案1】:

由于您的目标是查询完全匹配,因此您应该使用 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 2011-09-21
    相关资源
    最近更新 更多