GAE Простой поиск + автозаполнение - PullRequest
1 голос
/ 16 января 2010

Я ищу, чтобы создать функцию поиска для моего сайта флеш игры.

Одна из проблем с сайтом заключается в том, что трудно найти нужную вам игру, поскольку пользователи должны перейти к алфавитному списку, чтобы найти нужную.

Он работает с Google App Engine, написанным на python, с использованием фреймворка webapp.

По крайней мере, мне нужен простой способ поиска игр по их названию. Это может быть проще сделать поиск в Javascript, судя по всему. Я бы предпочел автозаполнение функциональности. Я попытался выяснить, как это сделать, и кажется, что единственный способ - создать огромный индекс, в котором каждое имя разбито на несколько этапов ввода («S», «Sh», «Sho»). . "Корзина Герой").

Есть ли способ сделать это просто и легко? Я начинаю думать, что мне придется создать веб-сервис на сервере PHP + MySql и выполнять поиск по нему.

Ответы [ 2 ]

5 голосов
/ 16 января 2010

Я написал код ниже, чтобы справиться с этим. По сути, я сохраняю все возможные слова «начинается» в списке вместо целых предложений. Вот как работает автозаполнение jquery на этом сайте .

import unicodedata
import re

splitter = re.compile(r'[\s|\-|\)|\(|/]+')

def remove_accents(text):
    nkfd_form = unicodedata.normalize('NFKD', unicode(text))
    return u"".join([c for c in nkfd_form if not unicodedata.combining(c)])

def get_words(text):    
    return [s.lower() for s in splitter.split(remove_accents(text)) if s!= '']

def get_unique_words(text):
    word_set = set(get_words(text))
    return word_set

def get_starts(text):
    word_set = get_unique_words(text)
    starts = set()
    for word in word_set:
        for i in range(len(word)):
            starts.add(word[:i+1])
    return sorted(starts)
0 голосов
/ 16 января 2010

Вы смотрели на gae-search ? Я считаю, что функция автозаполнения Django + jQuery не является частью бесплатной версии (она есть только в платной премиум-версии), но, возможно, она стоит вам немного денег.

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