Google app engine Google应用程序引擎搜索API不包括日期字段排序中的时间

Google app engine Google应用程序引擎搜索API不包括日期字段排序中的时间,google-app-engine,gae-search,Google App Engine,Gae Search,我有一组搜索文档,其中有一个日期字段,我想按它排序。此字段中的值还包含时间。当我尝试按此字段降序排序时,我得到了正确排序的日期,但似乎忽略了时间,即: { "results": [ { "photo_create_date": "2016-01-04T16:51:39.096000", }, { "photo_create_date": "2016-01-04T17:55:36.483000", }, { "phot

我有一组搜索文档,其中有一个日期字段,我想按它排序。此字段中的值还包含时间。当我尝试按此字段降序排序时,我得到了正确排序的日期,但似乎忽略了时间,即:

{
  "results": [
    {
      "photo_create_date": "2016-01-04T16:51:39.096000",
    },
    {
      "photo_create_date": "2016-01-04T17:55:36.483000",
    },
    {
      "photo_create_date": "2016-01-04T22:46:37.141000",
    },
    {
      "photo_create_date": "2016-01-04T16:51:13.450000",
    },
    {
      "photo_create_date": "2016-01-04T22:44:10.289000",
    },
    {
      "photo_create_date": "2016-01-04T22:36:28.252000",
    },
    {
      "photo_create_date": "2015-12-30T18:06:34.511000",
    }
  ]
}

知道如何解决这个问题吗?或者这是GAE搜索API的一个限制吗?

看来,这似乎是我不得不推出自己的解决方案的一个缺陷。以下是我使用的:

create_date_aware = pytz.utc.localize(item.create_date)
epoch_datetime = datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)
create_timestamp = (create_date_aware - epoch_datetime).total_seconds()
你所要做的就是将这个值存储为一个NumberField,它运行得非常好。在找出如何做到这一点时,这一问题值得肯定:

以下是我向谷歌提交的bug:

他们拒绝了这一点,因为它按预期工作,所以我创建了一个功能请求:

这是最重要的

虽然看起来您已经有了解决方案,但您有一些选择:

  • 自历元起以秒数形式存储
  • 从epoch开始以毫秒的形式存储,但是您需要至少除以1000才能适应搜索索引中可用的数字范围
  • 使用多个字段(日期、时间,可能是时区)

如果您需要保留时区,则需要使用多字段方法,使用标准格式(从历元开始以秒/毫秒为单位)进行比较。

我相信您可以将其存储为数字字段,并使用时间戳作为解决方法。我建议你在他们的bug追踪器中填入一个bug。嗨,Dmytro,这实际上是我昨天制定的解决方案。不过,把这个bug归档是个好主意。我今天晚些时候到这里时会把票寄到这里。谢谢你的回复!