如何使用Google App Engine进行不区分大小写的过滤查询?

时间:2010-07-20 12:16:59

标签: django google-app-engine google-cloud-datastore

我正在开发GAE Django项目,我必须实现搜索功能,我编写了一个查询,并根据搜索关键字获取数据。

portfolio = Portfolio.all().filter('full_name >=',key).filter('full_name <',unicode(key) + u'\ufffd')

此查询的问题是,它区分大小写。

有什么方法可以让它工作,而不依赖于关键字的情况?

请建议。

提前致谢。

2 个答案:

答案 0 :(得分:20)

您需要在写入时存储数据的规范化版本,然后使用相同的规范化进行搜索。

将数据全部大写或全部小写存储,可选择删除标点符号并将所有空格更改为单个空格,并可能将非ASCII字符转换为某种合理的ASCII表示(当然,它比听起来更棘手。)< / p>

答案 1 :(得分:1)

此问题的另一种解决方案 - 数据集很小 - 是在从数据存储区调用结果后在python中过滤结果:

for each_item in list_of_results:
    if each_item.name.lower().rfind(your_search_term) != -1:
        #Your results action