1

クエリを実行し、日付フィールドで並べ替えようとしています。

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

本番サーバーで動作させる方法と、開発サーバーで正しく並べ替える方法を考えています。私はその実験技術を知っていますが、これが私が見落としていたものであるかどうかを確認したかったのです

4

1 に答える 1

3

すべてのSortExpressionsにデフォルト値を指定する必要があります。これは、今後のリリースで明らかになります。また、デフォルトの日付値はまだ明示的にサポートされていないため、1970-01-01からの日数を表すデフォルトの数値を入力する必要があります。以下のコードでは、値0を指定することにより、デフォルトとして日付1970-01-01を使用しています。

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

また、direction = search.SortExpression.DESCENDINGを指定する必要はないことに注意してください。これは、方向のデフォルトです。制限にデフォルト値の1000を指定する必要もありません。

于 2012-06-25T17:21:17.037 に答える