Как делать запросы с фильтрами без учета регистра с помощью Google App Engine?

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

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

Проблема с этим запросом заключается в том, что он чувствителен к регистру.

Есть ли способ, с помощью которого я могу заставить его работать, независимо от случая с ключевым словом?

Просьба предложить.

Спасибо заранее.

Ответ 1

Вам нужно сохранить нормализованные версии ваших данных во время записи, а затем использовать ту же нормализацию для поиска.

Сохраняйте данные либо в верхнем регистре, либо в любом нижнем регистре, при необходимости удаляя знаки препинания и изменяя все пробелы на единое пространство и, возможно, преобразуя не-ASCII-символы в какое-то разумное представление ASCII (что, конечно, сложнее, чем кажется).

Ответ 2

Альтернативное решение этой проблемы - где массивы данных малы - это отфильтровать результаты в python после того, как вы вызвали их из хранилища данных:

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