我想爲標記字段構建一個自動完成功能,就像在App Engine上的SO一樣...任何想法我應該如何去做這個過程?在Google App Engine中創建表單自動完成
服務器端Algo? - 自動完成應該有什麼邏輯?
App Engine的實現? - 這應該是什麼數據存儲架構?
我想爲標記字段構建一個自動完成功能,就像在App Engine上的SO一樣...任何想法我應該如何去做這個過程?在Google App Engine中創建表單自動完成
服務器端Algo? - 自動完成應該有什麼邏輯?
App Engine的實現? - 這應該是什麼數據存儲架構?
你的問題是關於JavaScript(客戶端)比GAE(服務器端)更多。
你應該從jQuery AutoComplete之類的東西開始。如果標籤數量很少,您可以將數據嵌入到HTML中,否則使用AJAX調用來查看示例。
如果你去AJAX,那麼你需要在服務器端的東西 - 你所要做的就是放一些URL來接受查詢並返回JSON格式的數據。我喜歡在GAE上使用Django,對此有很好的serializers。
嘿。幾天前我回過來問這個問題。只要你有一個你想要搜索的StringProperty字段,數據存儲模式並不重要。由於App Engine目前還不支持全文搜索,因此您必須使用某種「開始於」搜索功能,這不是100%,而是查找標籤非常合適。
有這是2010年的代碼是用Java編寫的,但原理是一樣的谷歌I/O完成就如何落實在谷歌代碼博客上GAE基本搜索的討論:http://googlecode.blogspot.com/2010/05/google-app-engine-basic-text-search.html
至於邏輯,這完全取決於你。我看到每個按鍵都使用「開頭」查詢的系統,而另一些則使用LIKE查詢。但GAE的侷限性不允許LIKE查詢。本主題的更多討論:Google App Engine: Is it possible to do a Gql LIKE query?
剛剛發佈了2部分系列文章,介紹如何使用GAE實現自動完成:server-side service with Python和continuation using YUI3 AutoComplete plugin。
特別是,使用類似於SO的標籤的自動完成YUI3自動完成插件提供選項queryDelimiter
,它允許您在選擇要匹配的字符串之前定義分隔符。因此,如果將其設置爲空,然後插件匹配每一個新詞在文本框中鍵入:
YUI().use('autocomplete', function (Y) {
Y.one('body').addClass('yui3-skin-sam');
// AutoComplete on search input field
Y.one('#search_field').plug(Y.Plugin.AutoComplete, {
queryDelimiter: ' ',
source: '/rpc.xhr?action=ac_keywords&arg0={query}'
});
});
行動ac_keywords
(GAE中定義)查找與類型化的字符串開頭列表標籤。
嗨Paulo,我問了一個類似的問題給我的代碼的上下文。如果你可以看看,我會非常感激:http://stackoverflow.com/questions/25979567/jquery-autocomplete-with-remote-json-source-google-app-engine-python – puoyaahhh 2014-10-04 19:00:36