【问题标题】:Google Appengine Search API to Datastore QueryGoogle Appengine 搜索 API 到数据存储区查询
【发布时间】:2015-04-16 16:21:32
【问题描述】:

我像这样构建 Search API 数据

search.SearchResults(
results=
[
search.ScoredDocument(doc_id=u'4873035534303232', fields=[search.TextField(name=u'name', value=u'a'), search.TextField(name=u'description', value=u'b'), search.DateField(name=u'date', value=datetime.datetime(2015, 2, 16, 7, 21, 58, 188000)), search.TextField(name=u'author', value=u'test@example.com')], language=u'en', rank=130231318L), 
search.ScoredDocument(doc_id=u'5717460464435200', fields=[search.TextField(name=u'name', value=u'a b c'), search.TextField(name=u'description', value=u'c d e'), search.DateField(name=u'date', value=datetime.datetime(2015, 2, 16, 7, 21, 25, 965000)), search.TextField(name=u'author', value=u'test@example.com')], language=u'en', rank=130231285L), 
search.ScoredDocument(doc_id=u'5506354231902208', fields=[search.TextField(name=u'name', value=u'How about today?'), search.TextField(name=u'description', value=u"it's good"), search.DateField(name=u'date', value=datetime.datetime(2015, 2, 16, 7, 10, 13, 608000)), search.TextField(name=u'author', value=u'test@example.com')], language=u'en', rank=130230613L)
],
number_found=3L)

我没有将 blobKey 插入 Search API,然后我需要查询 Datastore 以获取 blobKey。每个 ndb 文章都有一个相同的 doc_id 作为一个 ID。

所以当我得到 Search API 的响应时,我必须查询 3 次

doc_id=u'4873035534303232', doc_id=u'5717460464435200', doc_id=u'5506354231902208'

我认为这个过程非常糟糕。很快就会超过配额。您还有其他解决方案吗?

【问题讨论】:

  • 启用计费以提高报价限制?
  • @PaulCollingwood 当然,总有一天我必须这样做~!我想知道它的优化解决方案。是通用解决方案吗?
  • 无法理解您的问题。执行搜索查询后,您想从数据存储中为每个结果获取一些额外数据?使用ndb.get_multi 或只是对该数据进行反规范化并将其存储在搜索 API 中以便更快地访问。
  • 哦,看看 appstats 是否是你想做的。但正如 Dmitry 所说,这正是您获取数据所要做的。
  • @DmitrySadovnychyi 你的意思是ndb.get_multi 不贵,对吧?我想当我尝试这个过程时,API 调用将是每页 3 次调用,这不是一个好的解决方案。谷歌每天给我们 1000 个免费查询,所以我想知道有效的解决方案。现在我知道了。谢谢!

标签: google-app-engine google-cloud-datastore app-engine-ndb google-search-api


【解决方案1】:

使用ndb.get_multi 或仅对该数据进行反规范化并将其存储在搜索 API 中以便更快地访问。

ndb.get_multi 将使用单批次获取所有密钥,并且仅使用 N 次读取操作。 (5 万次操作是免费的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多