Azure 认知搜索:DateTime 字段的 Facet "values"

Azure Cognitive Search: Facet "values" for DateTime field

我想我不明白做我想做的事。我想提供如下所示的方面列表:

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

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

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

假设

假设您要分面的字段是 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