【问题标题】:DotNet Core Azure Search SDK - filtering resultsDotNet Core Azure 搜索 SDK - 筛选结果
【发布时间】:2020-08-12 09:42:18
【问题描述】:

我们正在尝试在 Azure(认知)搜索中实现筛选功能。我希望找到一些不错的 SDK 方法来隐藏所有丑陋的部分,但到目前为止,我发现的唯一示例看起来像这样 (source):

SearchParameters parameters = new SearchParameters()
{
    Filter = String.Format("groupIds/any(p:search.in(p, '{0}'))", string.Join(",", groups.Select(g => g.ToString()))),
    Select = new[] { "application essays" }
};

我想知道我是否缺少一些文档。或者它可能在路线图上?

【问题讨论】:

  • 不确定你认为“丑陋的部分”是什么。 SearchParameters 是 OData 查询部分的细分。
  • 现在在 C# 等语言中,您会期望一些不错的 SDK 方法可以隐藏所有字符串连接、转义控制字符等
  • 您意识到所有这些字符串连接和转义都是因为参数描述了 OData 命令,不是吗?并非此 API 的所有接口都是 c#。
  • 大声笑,这越来越有趣了。您是否听说过将底层“命令”包装到带有方法的类中的库的概念?这样您就不需要学习 OData 命令,而是可以使用方法。哦,现在的 IDE 也向您展示了可用的方法。

标签: azure-cognitive-search azure-search-.net-sdk


【解决方案1】:

查看我们上个月发布的新 Azure.Search.Documents SDK。它确实具有 OData 过滤器帮助,您可以找到 here:

int stars = 4;
SearchOptions options = new SearchOptions
{
    // Filter to only Rating greater than or equal our preference
    Filter = SearchFilter.Create($"Rating ge {stars}"),
    Size = 5, // Take only 5 results
    OrderBy = { "Rating desc" } // Sort by Rating from high to low
};

它将正确地转义字符串参数。 OData $filter 语法仍然需要原始输入,但可格式化字符串中的类型帮助器应该会让您的情况更容易:您不必担心自己转义值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2021-06-01
    • 1970-01-01
    • 2020-01-02
    • 2021-09-02
    相关资源
    最近更新 更多