1

日付を含む複数のエンティティを検索していますが、Search API は、並べ替えという 1 つのことを除いて、それらすべてでうまく機能します。

これが私のエンティティの1つのデータモデルです(もちろん単純化されています):

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

search.Documentwhereを作成するコード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"完全に正常に機能します。これは、日付を使用する他のエンティティ タイプでも発生するため、何が起こっているのかわかりません。アドバイス?

4

1 に答える 1

3

default_valueあなたが持っているのではなく、有効な日付である必要があると思います''

于 2013-02-03T00:20:47.000 に答える