0

我不确定我是否正在使用 NDB Search API,因为它应该被使用。我已经通读了文档,但我认为我要么缺少某些东西,要么缺乏我的 python 技能。任何人都可以确认/改进使用搜索的这种进展吗?

# build the query object
query_options = search.QueryOptions(limit=results_per_page, offset=number_to_offset)
query_object = search.Query(query_string=escaped_param, options=query_options)

# searchResults object
video_search_results = videos.INDEX.search(query_object)

# ScoredDocuments list
video_search_docs = video_search_results.results

# doc_ids
video_ids = [x.doc_id for x in video_search_docs]

# entities
video_entities = [Video.GetById(x) for x in video_ids]
4

2 回答 2

1

我个人可能会写这个更像:

# build the query object
query_options = search.QueryOptions(limit=results_per_page, offset=number_to_offset)
query_object = search.Query(query_string=escaped_param, options=query_options)

# do the search
video_search = search.Index(name=VIDEO_INDEX).search(query_object)

# list of matching video keys
video_keys = [ndb.Key(Video, x.doc_id) for x in video_search.results]

# get video entities
video_entities = ndb.get_multi(video_keys)

使用ndb.get_multi会更有效率。您可以使用AppStats来验证这一点。如果您在 RPC 未完成时可以进行其他处理,您也可以查看异步等效项。

我不确定该Video.GetById方法实际上是什么,但我建议您查看Model.get_by_id.

于 2013-03-26T14:37:14.820 回答
0

您的代码似乎一切正常。有什么问题吗?

于 2013-03-25T09:31:59.487 回答