Django запрашивает специальные символы - PullRequest
0 голосов
/ 24 декабря 2010

Я работаю на месте с Google Maps и с помощью Django для. Мой вопрос:

У меня есть строка в request.GET['descricao'], скажем, она содержит "Via fasta".

В моей базе данных есть магазин = "Via Rápida", который я делаю:

local = Local.objects.filter(name__icontains=request.GET['descricao'])

с этим я могу получить все, что угодно, например "Via Rapida", но результат, в котором значение "Via rápida" никогда не будет совпадать в запросе (может быть символ ASCI?)

что я должен сделать, если строка "Via rapida" соответствует "via rapida" и "via fasta"? Регулярные выражения? Как?

Ответы [ 2 ]

2 голосов
/ 24 декабря 2010

Я думаю, что лучше всего использовать Полнотекстовый поиск движок. Вот список полнотекстового поисковика, который можно использовать с django:

И мы не должны забывать Стог сена , который является прокси, который может использовать различные поисковые системы, такие как solr, чёрт ...;

Вы также можете использовать полнотекстовый поиск в своей базе данных без использования третьей библиотеки, например, this .

EDIT: Исходя из комментария OP, QuerySet API предлагает функцию полнотекстового поиска, которая работает только с проверкой MySQL здесь .

1 голос
/ 25 декабря 2010

Если вы просто заинтересованы в поиске без ascii и icontains удовлетворяет вашим потребностям, я бы использовал более простой подход к нормализации ТОЛЬКО символов Юникода с диакритическими знаками (акценты).

# -*- coding: utf-8 -*-
import unicodedata
def strip_accents( text, encoding='ASCII'):
    return ''.join(
        (c for c in unicodedata.normalize('NFD', unicode(text))
        if unicodedata.category(c) != 'Mn') )

if __name__ == "__main__":
    print strip_accents( u"Corrão quê a polícia vem aí! Será ¿")
    print strip_accents( u"Wie spricht man diessen Wörter aus?" )

Это, очевидно, означает, что вы должны удалить акценты при операциях сохранения / обновления, чтобы сохранить согласованность. Что печально, ваш текст потеряет всю привлекательность акцентов ... навсегда!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...