结果页面:使用Search API文档字段或从数据存储区获取实例?

时间:2013-11-03 11:18:56

标签: google-app-engine google-search-api

考虑到以下情况,我想知道以下哪种方法在资源使用方面更快和/或更有效:

您的文档包含以下字段:

  1. 标题(文字)
  2. 说明(文字)
  3. 图片(文字 - 网址到图片来源,或者可能是HTML字段)
  4. Search API应搜索“标题”和“说明”字段,但不要搜索“图像”字段。图像字段仅用于模板能够将图像源渲染到搜索结果页面上。

    所以问题是:

    1. 这种做法是否正确?
    2. 添加真正用于搜索的字段是否会增加超重并消耗额外资源?
    3. 有没有办法告诉Search API不搜索某个字段?
    4. 使用Search API仅检索doc_ids然后使用这些doc_ids从数据存储区获取会更快吗?
    5. 谢谢!

1 个答案:

答案 0 :(得分:1)

1)您使用某些字段填充文档,然后搜索这些字段。方法是正确的。有一个URL链接到图像的字段也是我也喜欢的。

2)是的,因为它们必须存储,并且您需要按存储的每个字节付费。但是如果你需要它们,因为它们构成你想要服务的数据的一部分,那就是它的方式。

3)是的,如果您愿意,您只能搜索指定的字段。例如:

  

query_string =“product:piano”

该查询只会搜索字段“product”。这一切都在这里详述:https://developers.google.com/appengine/docs/python/search/#Python_Searching_for_documents_by_their_contents

4)您可以使用appstats确定时间等:https://developers.google.com/appengine/docs/python/tools/appstats

但在我看来,如果你只获得文档ID,然后只是获取所有这些文档,那么这将比获取整个文档更慢,因为你正在对数据库进行更多的往返查询。如果你没有全部获得它们并只使用匹配的第一个,或者文档很大,那么它可能会更慢。谁知道!您的用例是您的用例。

为什么不通过实现各种方法来自己运行一些测试,然后查看哪种方法最适合您的用例? Appstats将帮助解决这个问题。

如果要将数据存储中的其他数据存储在获取初始文档后检索到的可搜索文档链接(例如,您将数据存储区密钥存储在文档中),那么所有数据都会带来成本,速度或$$ 。两者都是有效的选项,具体取决于您的(再次!)用例。