2010-11-22 12 views
6

Je souhaite créer une fonction d'auto-complétion pour un champ de tags comme dans SO sur App Engine ... une idée de la procédure à suivre?Créer un formulaire Auto-achevé dans Google App Engine

Server Side Algo? - Quelle logique devrait être là pour l'auto-complétion?

Implémentation d'App Engine? - Quel devrait être le schéma Datastore pour cela?

Répondre

6

Votre question concerne plus le javascript (côté client) que GAE (côté serveur).

Vous devriez commencer à partir de quelque chose comme jQuery AutoComplete. Si le nombre de tags est petit, vous pouvez simplement intégrer les données dans le fichier html, sinon regardez les exemples en utilisant les appels AJAX.

Si vous allez AJAX alors vous avez besoin de quelque chose du côté serveur - tout ce que vous avez à faire est de mettre en place une URL qui accepte une requête et renvoie des données formatées JSON. J'aime utiliser Django sur GAE, il a une belle serializers pour cela.

+0

Salut Paulo, j'ai posé une question similaire vu le contexte de mon code. Si vous pouviez y jeter un coup d'oeil, j'apprécierais beaucoup: http://stackoverflow.com/questions/25979567/jquery-autocomplete-with-remote-json-source-google-app-engine-python – puoyaahhh

8

Salut. Je suis venu autour de cette question il y a quelques jours. Le schéma du magasin de données n'a pas vraiment d'importance tant que vous avez un champ StringProperty sur lequel vous souhaitez effectuer une recherche. Étant donné qu'App Engine ne prend pas encore en charge la recherche de texte intégral, vous devrez effectuer une recherche commençant par «commence par», ce qui n'est pas le cas à 100%, mais tout à fait correct pour rechercher des balises.

Il y a une discussion sur la façon de mettre en œuvre la recherche de base sur GAE sur le blog Google Code qui a été fait pour Google I/O 2010. Le code est écrit en Java, mais les principes sont les mêmes: http://googlecode.blogspot.com/2010/05/google-app-engine-basic-text-search.html

Quant à la logique, bien c'est totalement à vous. J'ai vu des systèmes qui utilisent des requêtes "commence par" sur chaque touche, d'autres utilisent des requêtes LIKE. Mais les limitations de GAE ne permettent pas les requêtes LIKE. Autres discussions dans ce sujet: Google App Engine: Is it possible to do a Gql LIKE query?

1

Nous venons de publier deux séries de parties sur la mise en œuvre de la saisie semi-automatique avec GAE: server-side service with Python et continuation using YUI3 AutoComplete plugin.

En particulier, l'utilisation de la saisie semi-automatique pour les balises similaires au plug-in SO YUI3 AutoComplete offre l'option queryDelimiter qui vous permet de définir le séparateur avant de sélectionner la chaîne à faire correspondre. Ainsi, si elle est définie à l'espace, puis tous les matchs du plugin nouveau mot tapé dans la zone de texte:

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}' 
     }); 
}); 

L'action ac_keywords (définie dans GAE) recherche les balises de liste qui commencent par la chaîne typée.