克服appengine搜索的大小条目大小限制?

时间:2011-02-09 11:52:02

标签: python google-app-engine google-cloud-datastore searchable

我正在尝试使用可搜索的博客条目模型,它在开发平台上运行良好但是当我尝试在云中添加条目时出现错误:

Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/init.py", line 517, in call
    handler.post(*groups) File
"/base/data/home/apps/smart-fast/1.348228399174418277/admin.py", line 76, in post
    article.put()
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/init.py", line 895, in put
    return datastore.Put(self._entity, config=config)
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py", line 404, in Put
    return _GetConnection().async_put(config, entities, extra_hook).get_result()
File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 601, in get_result
    self.check_success()
File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 572, in check_success
    rpc.check_success()
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 502, in check_success
    self.__rpc.CheckSuccess()
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 126, in CheckSuccess 
    raise self.exception
ApplicationError:

ApplicationError: 1 Too many indexed > properties for entity: app:
"smart-fast",path < Element { type: "Article", id: 2002 }> This index put
it over the limit: entity_type: "Article",ancestor: false,
Property { name: "searchable_text_index", direction: ASCENDING},
Property { name: "searchable_text_index", direction: ASCENDING},
Property { name: "date", direction: ASCENDING}

这些条目不是那么大(<500字)是低限吗?我能想到解决这个问题的唯一方法是将条目存储为不可搜索的模型,并将条目文本分解为较小的可搜索模型,每个模型都引用主条目。 非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您似乎遇到的是爆炸指数。您可以在此处详细了解它们:http://code.google.com/appengine/docs/python/datastore/queries.html#Big_Entities_and_Exploding_Indexes

除非您拥有非常小的数据集,否则基本上您无法使用AppEngine创建全文引擎。要么你会遇到爆炸式索引,要么遇到其他问题(即合并加入超时)。我建议您查看名为IndexTank的服务,这是一个非常好的全文搜索服务。它有一个完整的REST api和python客户端,所以很容易上AppEngine。

相关问题