使用 AppEngine 搜索按日期排序 API

Sorting by date with AppEngine search API

我有包含内容 TextField 和日期 DateField 的文档。我正在尝试获取最新的文档。

我正在使用以下代码:

index.search(search.Query(query_string='date > epoch', 
                          options=search.QueryOptions(
                            sort_options=search.SortOptions(
                              expressions=[search.SortExpression(
                                 expression='date', 
                                 direction=search.SortExpression.DESCENDING, 
                                 default_value='1970-01-01')])))

正确的做法是什么?

当您按字段过滤时,您将强制使用索引,作为副作用,输出将按该字段排序。

https://cloud.google.com/appengine/docs/python/search/options

When you call the search() method using a query string alone, the results are returned according to the default query options:

  • Documents are returned sorted in order of descending rank
  • Documents are returned in groups of 20 at a time
  • Retrieved documents contain all of their original fields

不知道为什么它不适用于显式排序选项。

根据文档,除非您指定不同的排序选项,否则所有文档都按其等级排序。并且文档排名设置为它被添加到索引的时间,同样,除非您指定不同的排名。

如果这是您想要的行为,则无需添加日期字段并按它排序。