2013-06-20 47 views
-1

幾個簡單的問題:複雜的谷歌應用程序引擎搜索相關GAE搜索和數據存儲

(1)爲什麼我可以使用搜索服務的一個以上的財產不平等的過濾器,但我只能不平等在查詢數據存儲時,最多隻能篩選一個屬性?這種限制似乎存在於一種服務中,而不是另一種服務中,這似乎很奇怪。 (2)我打算使用谷歌應用程序引擎搜索來查詢非常多的對象(數千或數十萬,也許更多)。我打算做很多不平等,例如:「在x之前創建的時間」,「大於y的價格」,小於z的「評級」,a和b之間的「緯度」,c和d之間的「經度」等。看起來像很多過濾器並且可能很昂貴。 App Engine是否爲此尋找合適的解決方案?

非常感謝。

回答

1

1)SearchService基本上爲您提供了一個API來執行各種不能使用數據存儲的事情。如果您可以在數據存儲上執行這些操作,那麼您並不需要SearchService。雖然這不是一個非常令人滿意的答案,但在搜索API可用之前,您可能對傳統RDBMS執行的許多常見操作都不可能實現。

2)有點困難。目前,搜索api不能很好地處理失敗情況,通常你會得到一個沒有有意義的消息的SearchServiceException。在過去一年左右,該團隊似乎一直在改進這一點,儘管這一領域的修復似乎進展緩慢。 從我提出的故障單中,故障通常是查詢運行時間過長的結果。這通常表示爲太複雜的查詢。實際上,您可以使用查詢字符串的組合以及應用於搜索請求的參數來調整查詢。缺點是它的所有黑盒子,我還沒有看到任何優化查詢的指南或工具。當他們失敗時,他們就會失敗。

AppEngine搜索API旨在解決您所描述的問題,無論是在您的情況下,它確實可能很難確定。您可以設置一些示例查詢並將其部署到測試環境,以查看它是否基本適用於您的典型數據集。我期望它能夠爲您提供的示例正常工作。我已經成功地在大規模生產環境中運行類似的搜索。

+0

謝謝,尼克。你能分享一些關於你正在運行的搜索類型和記錄的數量/模式等嗎? – mickeybob