2012-06-24 75 views
1

我試圖運行查詢並按日期字段進行排序。使用Google App Engine搜索的TransientError

q = self.request.get("q") 
index = search.Index(name="transaction") 

sort_options = search.SortOptions(
    expressions=[ 
     search.SortExpression(expression='timestamp_date', direction=search.SortExpression.DESCENDING) 
    ], 
    limit=1000) 
options = search.QueryOptions(limit=30, cursor=search.Cursor(), sort_options=sort_options) 

results = index.search(search.Query(query_string=q, options=options)) 

在開發服務器,代碼工作,但結果是不正確排序。在生產服務器上它根本不起作用;它提供了以下錯誤:

Search failed 
Traceback (most recent call last): 
    File "/base/data/home/apps/s~xxx/pre-24.359846149527858049/main.py", line 78, in get 
    results = index.search(search.Query(query_string=q, options=options)) 
    File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/search/search.py", line 2609, in search 
    _CheckStatus(response.status()) 
    File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/search/search.py", line 414, in _CheckStatus 
    raise _ERROR_MAP[status.code()](status.error_detail()) 
TransientError 

我不知道如何使它在生產服務器上的工作以及如何正確排序的開發服務器上。我知道它的實驗技術,但我想檢查這是否是我忽略的東西

回答

3

您需要爲所有SortExpressions提供默認值。這將在即將發佈的版本中闡明。此外,還沒有明確支持默認日期值,所以您需要輸入表示自1970-01-01以來的天數的默認數值。在下面的代碼,我使用的日期1970-01-01作爲默認指定的0

sort_options = search.SortOptions(
    expressions=[ 
     search.SortExpression(expression='timestamp_date', default_value=0) 
    ]) 

另外一個值請注意,您不需要指定方向= search.SortExpression.DESCENDING作爲 是方向的默認值。您無需爲限制指定默認值1000。

相關問題