5

在CMS中,使用常規NDB查詢和訂購來檢索客戶列表。爲了允許過濾名稱,公司名稱和電子郵件,我創建了幾個(有時是很多)索引。情況並不理想,但可行。使用數據存儲區(NDB),搜索API還是兩者來查看數據?

現在有(實驗)Search API。它似乎與數據存儲(或NDB)沒有關係,但我的數據已經存在。

我想使用全文搜索並同時在多個字段中放置過濾器,因此我應該將數據保留在數據存儲區中,並且在Search API的Documents中複製部分數據?或者,作爲search example suggests,完全跳過數據存儲區。

回答

6

我不太清楚推薦的方法是什麼實現,但Search API似乎設計主要用作額外的手動管理索引。在大多數情況下,將您的所有數據存儲在Search API中並不理想,因爲您可以輕鬆地將搜索API索引的大小與不需要過濾或搜索的字段一併刪除,也不會被設計好用於需要定期寫入的情況。

我個人的建議是將所有數據留在NDB中,設計類使用Search API創建包含相關可搜索數據的文檔,每次寫入時更新Search API版本以保持兩種介質之間的一致性對數據存儲版本(或者如果你正在寫數據的話,使用任務/ cron或類似的系統)。在過濾相關數據的Search API文檔時,您應該存儲您在UI中呈現的所有數據,因爲手動加入搜索API結果和數據存儲區數據不必要的密集,並且會嚴重減慢整個過程。

+0

謝謝。這是解決這個問題的一種非常實用和有用的方法。 – kvdb

相關問題