python - GAE 简单搜索 + 自动完成

标签 python google-app-engine

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

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

它通过使用 webapp 框架的 python 编写的 Google App Engine 运行。

至少我需要一种简单的方法来按名称搜索游戏。从它的外观来看,用 Javascript 进行搜索可能更容易。我更喜欢自动完成功能。我试图弄清楚如何解决这个问题,似乎唯一的方法是创建一个巨大的索引,每个名称都分为不同的输入阶段(“S”、“Sh”、“Sho”.. .“购物车英雄”)。

有没有简单易行的方法呢?我开始认为我必须在 PHP+MySql 服务器上创建一个 Web 服务并使用它进行搜索。

最佳答案

我已经编写了下面的代码来处理这个问题。基本上,我将所有可能出现的单词“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)

关于python - GAE 简单搜索 + 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078738/

相关文章:

python - 如何在Python中使用正则表达式获取结束字符串?

python - 调用元类基函数()时出错参数 1 必须是 code 而不是 str

c# - UDP 打洞问题

python - 查找最大行数

java - App Engine - LocalDatastoreService 加载 - 无法从后备存储加载

python - 如何在 Mac 操作系统的 Rodeo GUI 中安装 xgboost?

java - GoogleAppEngine 后端

java - 澄清具有祖先和一个属性的复合索引

python - 从另一个页面引用实体

java - BigQuery 性能和运行并发作业