App Engine搜索API - 排序结果

时间:2013-02-02 23:48:38

标签: google-app-engine full-text-search

我正在搜索几个包含日期的实体,而Search API在所有这些实体中运行良好,除了一件事 - 排序。

这是我的一个实体的数据模型(当然简化):

class DepositReceipt(ndb.Expando):
    #Sets creation date
    creation_date = ndb.DateTimeProperty(auto_now_add=True)

创建search.Document的代码,其中de是实体的实例:

document = search.Document(doc_id=de.key.urlsafe(),
    fields=[search.TextField(name='deposit_key', value=de.key.urlsafe()),
            search.DateField(name='created', value=de.creation_date),
            search.TextField(name='settings', value=de.settings.urlsafe()),
            ])

返回有效文件。


最后问题就行了。我从官方的GAE Search API教程中获取了此片段,只是将排序方向更改为DESCENDING,并将搜索表达式更改为created(上面Document的日期属性)。

expr_list = [search.SortExpression(
    expression="created", default_value='',
    direction=search.SortExpression.DESCENDING)]

我认为这不重要,但搜索代码的其余部分如下所示:

sort_opts = search.SortOptions(expressions=expr_list)

query_options = search.QueryOptions(
    cursor=query_cursor,
    limit=_NUM_RESULTS,
    sort_options=sort_opts)  

query_obj = search.Query(query_string=query, options=query_options)

search_results = search.Index(name=index_name).search(query=query_obj)

在制作中,我收到以下错误消息:

InvalidRequest: Failed to parse search request "settings:ag5zfmdoaWRvbmF0aW9uc3IQCxIIU2V0dGluZ3MYmewDDA"; failed to parse date

expression="created"更改为其他任何内容都非常正常。这也发生在我使用日期的其他实体类型中,因此我不知道发生了什么。建议?

1 个答案:

答案 0 :(得分:3)

我认为default_value必须是有效的日期,而不是''