GAE简单搜索+自动完成

时间:2010-01-16 20:00:38

标签: python google-app-engine

我正在为我的Flash游戏网站创建一个搜索功能。

该网站存在的一个问题是很难找到您想要的特定游戏,因为用户必须按字母顺序列表找到他们想要的游戏。

使用webapp框架,使用python编写的Google App Engine运行。

至少我需要一种简单的方法来按照他们的名字搜索游戏。从它的外观中搜索Javascript可能更容易。我更喜欢自动完成功能。我试图弄清楚如何解决这个问题,似乎唯一的办法是创建一个巨大的索引,每个名称分解为各种类型的键入(“S”,“Sh”,“Sho”.. “购物车英雄”)。

无论如何都可以简单轻松地完成这项工作吗?我开始认为我必须在PHP + MySql服务器上创建一个Web服务并使用它进行搜索。

2 个答案:

答案 0 :(得分:5)

我已经编写了下面的代码来处理这个问题。基本上,我将所有可能的单词“starts”保存在列表中而不是整个句子中。这就是this site的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)

答案 1 :(得分:0)

你看过gae-search了吗?我相信Django + jQuery“自动完成”功能不是免费版本的一部分(它只是在付费高级版本中),但也许它值得一点钱。