Создать автозаполнение формы в Google App Engine - PullRequest
6 голосов
/ 22 ноября 2010

Я хочу создать функцию автозаполнения для поля тегов, как в SO на App Engine ... Есть идеи, как мне поступить?

На стороне сервера Algo?- Какая логика должна быть для автозаполнения?

Реализация App Engine?- Какой должна быть схема Datastore для этого?

Ответы [ 3 ]

8 голосов
/ 22 ноября 2010

Эй. Я пришел к этому вопросу несколько дней назад. Схема хранилища данных на самом деле не имеет значения, если у вас есть поле StringProperty, по которому вы хотите выполнить поиск. Поскольку App Engine пока не поддерживает полнотекстовый поиск, вам придется выполнить поиск типа «начинается с», который не 100%, но вполне подходит для поиска тегов.

В блоге Google Code обсуждается, как реализовать базовый поиск по GAE, что было сделано для Google I / O 2010. Код написан на Java, но принципы те же: http://googlecode.blogspot.com/2010/05/google-app-engine-basic-text-search.html

Что касается логики, ну, это полностью зависит от вас. Я видел системы, которые используют запросы «начинается с» при каждом нажатии клавиши, другие используют LIKE-запросы. Но ограничения GAE не допускают НРАВИТСЯ запросов. Другие обсуждения в этой теме: Google App Engine: возможно ли выполнить запрос Gql LIKE?

6 голосов
/ 22 ноября 2010

Ваш вопрос больше касается javascript (на стороне клиента), чем GAE (на стороне сервера).

Вы должны начать с чего-то вроде jQuery AutoComplete .Если количество тегов невелико, вы можете просто вставить данные в html, иначе посмотрите на примеры, используя вызовы AJAX.

Если вы переходите на AJAX, то вам нужно что-то на стороне сервера - все, что вам нужно сделать, это создать какой-нибудь URL, который принимает запрос и возвращает данные в формате JSON.Мне нравится использовать Django в GAE, для этого есть хорошие сериализаторы .

1 голос
/ 24 октября 2011

Только что опубликовал 2 серии статей о реализации автозаполнения с помощью GAE: серверная служба с Python и продолжение с использованием плагина YUI3 AutoComplete .

В частности, с использованием автозаполнениядля тегов, похожих на 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) ищет список тегов, которые начинаются с напечатанной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...