1

看起來像 - 至少現在 - 我必須手動保持搜索索引與數據存儲同步。如果我每次在數據存儲中更改某些內容時都重建索引,那麼我認爲我會遇到配額問題,所以我認爲創建一個cron作業來定期重建索引會更好。我應該多久重建索引以避免遇到配額問題?我應該多久重建一次我的App Engine搜索索引(全文搜索)?

+1

如何構建你的數據?你在搜索索引中存儲什麼?你如何將它存儲在索引中?你使用python/java嗎?如果Python使用'db'或'ndb'?有很多需要的信息。如果你不得不重新創建你的搜索索引,每次更改都會造成錯誤... – aschmid00 2013-03-04 17:01:40

+0

對不起,我想我對全文搜索API的工作原理沒有很好的理解。它是一個Python應用程序。我正在使用'db'和HRD。謝謝你的幫助。 – 2013-03-04 18:19:10

+0

和你在搜索api中存儲什麼?我強烈建議你在任何情況下都使用'ndb'而不是'db'。它有很多很好的部分db缺失。 – aschmid00 2013-03-04 18:35:33

回答

4

使用ndb爲模型,你有Model Hooks後,將它們與_post_put_hook後索引實體。

例如:

class MyModel(ndb.Model): 
    title = ndb.StringProperty() 

    def _post_put_hook(self, future): 
     fields = [search.TextField(name='title', value=self.title)] 
     doc = search.Document(doc_id=self.key.id(), fields=fields) 
     search.Index('index-name').put(doc) 
     ... 

https://developers.google.com/appengine/docs/python/ndb/modelclass#Model__post_put_hook

+0

因此,清楚的是,無論何時更新數據存儲項目,它都會自動更新數據存儲項目各自的搜索索引條目? – 2013-03-19 17:35:36

+0

是,如果您使用唯一標識符作爲搜索文檔密鑰。所以每次更新實體時,都會用特定的doc_id覆蓋searchdoc。 – aschmid00 2013-03-19 18:33:21

+0

,當然你應該在刪除實體時刪除搜索文檔。顯然帶着'_post_delete_hook' – aschmid00 2013-03-19 19:21:27