2016-07-27 5 views
2

Я использую трясогузка SERACH:Как сделать поиск трясогузка независимо от регистра

query = self.request.query_params 
questions = models.Questions.objects.filter(
    answer__isnull=False, 
    owner__isnull=False).exclude(answer__exact='') 
s = get_search_backend() 
results = s.search(query[u'question'], questions) 

И это, как настроить индексацию моей Questions модели:

search_fields = [ 
    index.SearchField('question', partial_match=True, boost=2), 
    index.FilterField('answer'), 
    index.FilterField('owner_id') 
] 

Но это чувствительно к регистру. Поэтому запросы how и How дадут разные результаты.

Мне нужно сделать мой поиск ведут себя таким образом:

Когда я печатаю либо how или How, он должен вернуть

how to... 
How to... 
The way how... 
THE WAY HoW... 

Другими словами, он должен найти все упоминания о how во всех Возможное случаев.

Как это сделать?

P.S .: Я использую бэкэнд по умолчанию, и я могу изменить его, если это необходимо.

+0

Можете ли вы рассказать, как вы настроили индексацию своей модели 'Вопросы'? – Val

ответ

2

С помощью бэкэнда для поиска эластичных материалов Wagtail поля с индексом partial_match=True обозначены цифрой lowercase. Чтобы выполнить поиск без учета регистра, все, что вам нужно сделать, это строчная строка запроса:

results = s.search(query[u'question'].lower(), questions) 
+0

Тогда вопросы, начинающиеся с буквы верхнего регистра, не найдены – Viktor

+0

Есть ли способ включить поиск без учета регистра в файле settings.py? Может быть, с чем-то вроде: WAGTAIL_SEARCH_CASE_INSENSITIVE = True – robnardo