Как создавать запросы без учета регистра с помощью Google App Engine? - PullRequest
13 голосов
/ 20 июля 2010

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

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

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

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

Пожалуйста, предложите.

Заранее спасибо.

Ответы [ 2 ]

20 голосов
/ 20 июля 2010

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

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

1 голос
/ 15 сентября 2011

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

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