使用AppEngine搜索API按日期排序

时间:2016-07-01 15:59:07

标签: google-app-engine google-app-engine-python

我的文档内容为TextField,日期为DateField。我正在尝试获取最新的文档。

  • 定期搜索'日期>时期'似乎已经排序了 按日期的结果。这是预期的行为吗?
  • 当我尝试使用SortExpression显式排序时,结果甚至不按任何特定顺序排序(除了在它看起来也起作用的开发服务器上)。

我使用以下代码:

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')])))

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

  

当你单独使用查询字符串调用search()方法时,   结果根据默认查询选项返回:

     
      
  • 按降序排列的顺序返回文件
  •   
  • 文件一次只能以20个一组的形式返回
  •   
  • 检索到的文档包含所有原始字段
  •   

不知道为什么它不适用于明确的排序选项。