使用 AppEngine 搜索按日期排序 API
Sorting by date with AppEngine search API
我有包含内容 TextField 和日期 DateField 的文档。我正在尝试获取最新的文档。
- 使用 'date > epoch' 的常规搜索似乎已经对
结果按日期。这是预期的行为吗?
- 当我尝试使用 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')])))
正确的做法是什么?
当您按字段过滤时,您将强制使用索引,作为副作用,输出将按该字段排序。
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
不知道为什么它不适用于显式排序选项。
根据文档,除非您指定不同的排序选项,否则所有文档都按其等级排序。并且文档排名设置为它被添加到索引的时间,同样,除非您指定不同的排名。
如果这是您想要的行为,则无需添加日期字段并按它排序。
我有包含内容 TextField 和日期 DateField 的文档。我正在尝试获取最新的文档。
- 使用 'date > epoch' 的常规搜索似乎已经对 结果按日期。这是预期的行为吗?
- 当我尝试使用 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')])))
正确的做法是什么?
当您按字段过滤时,您将强制使用索引,作为副作用,输出将按该字段排序。
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
不知道为什么它不适用于显式排序选项。
根据文档,除非您指定不同的排序选项,否则所有文档都按其等级排序。并且文档排名设置为它被添加到索引的时间,同样,除非您指定不同的排名。
如果这是您想要的行为,则无需添加日期字段并按它排序。