【问题标题】:Azure Cognitive Search: Facet "values" for DateTime fieldAzure 认知搜索:DateTime 字段的构面“值”
【发布时间】:2021-10-13 11:44:54
【问题描述】:

我想我不明白做我想做的事。我想提供一个看起来像这样的方面列表:

  • 今天创建 (123)
  • 上周创建 (3,455)
  • 上个月创建 (12,234)
  • 创建于去年 (112,234)

documents 说 ""facet=lastRenovationDate,values:2010-02-01T00:00:00Z" 生成两个存储桶:一个用于 2010 年 2 月之前装修的酒店,一个用于 2010 年 2 月 1 日或之后装修的酒店。

从逻辑上讲,我不明白如何创建这些存储桶。没有说明如何提供日期范围的文档,而且我无法找出正确的组合。

我可以弄清楚代码,但从逻辑上讲,我将如何完成上述操作?谢谢!

【问题讨论】:

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


    【解决方案1】:

    假设

    假设您要处理的字段是createdDate,并且类型为Edm.DateTimeOffset。根据您的要求,我认为您在获取分面数据后必须进行一些计算。

    这些是您感兴趣的日期

    (今天) - 2021-08-12T00:00:00Z

    昨天 - (今天 - 1 天)2021-08-11T00:00:00Z

    上周 - (昨天 - 1 周)2021-08-04T00:00:00Z

    上个月 - (4 周前到 1 周前)2021-07-12T00:00:00Z

    去年 - (1年前至上个月)2020-08-12T00:00:00Z

    查询和响应

    因此您将在分面中指定 4 个值 - 昨天、上周、上个月、去年。我将首先在实际查询中使用这些名称以使其更具可读性。第二个是您将进行的实际查询

    1. 人类可读的查询 - facet=createdDate,values:last year | last month | last week | yesterday
    2. 实际搜索查询 - facet=createdDate,values:2020-08-12T00:00:00Z| 2021-07-12T00:00:00Z | 2021-08-04T00:00:00Z | 2021-08-11T00:00:00Z

    这将产生如下 5 个数据桶。

    a - 比去年旧的所有东西(你不需要这个,你可以把它扔掉)

    b - 从去年到上个月的所有内容

    c - 从上个月到上周的所有内容

    d - 从上周到昨天的所有内容

    e - 从昨天到今天的一切

    解决方案

    现在将进行以下计算,以获得您需要的范围。

    • 今天创建 (123) - e

    • 上周创建 (3,455) - d + e

    • 上个月创建 (12,234) - c + d + e

    • 创建于去年 (112,234) - b + c + d + e

    • 在去年之前创建 (547,838) - a

    【讨论】:

    • 嘿,哇!这非常有帮助!非常感谢你,迈克尔!我已经按照您提到的顺序传递了正确的值:createdate,values:2020-08-12T23:17:46.1594778Z|2021-07-12T23:17:46.1595629Z|2021- 08-05T23:17:46.1595642Z|2021-08-11T23:17:46.1595806Z 现在我正在使用 Response.Facets,按照您的描述进行一些数据操作。您绝对值得我的一些“声誉” “哈哈,它不会让我奖励它,但它正在向你走来。一旦它完全工作,我会通知你,再次感谢!
    猜你喜欢
    • 2022-11-03
    • 1970-01-01
    • 2020-09-11
    • 2021-11-26
    • 2021-06-06
    • 2021-10-18
    • 2020-03-27
    • 2022-12-17
    • 1970-01-01
    相关资源
    最近更新 更多