У меня есть следующие модели:Стог __contains не найдя подстроки прошли через GET [ElasticSearch backeng]
class ProductIndex(CelerySearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
number = indexes.CharField()
description = indexes.CharField(model_attr='description')
В моей странице, я выполнить вызов AJAX на функцию, которая должна возвращать мне продукты, которые имеют свои описание, содержащее несколько слов используемых типов. Например, если у меня есть продукт с описанием «Apple Macbook Pro», и пользователь вводит «книгу», я хочу вернуть этот результат.
я выполнить следующее:
q = request.GET['q']
results = SearchQuerySet().models(Product).filter(description__contains=q)
Однако, как я уже сказал, у меня есть, например, продукт с описанием:
Macbook
и пользовательские типы book
, он не будет работать. Однако Macbook
будет работать.
И наконец, если я печатаю q
, он возвращает u'book'
.
Хорошо это работает! Однако это чувствительно к регистру ... в любом случае обойти это? – abisson
Я отредактировал свой ответ, чтобы показать, как это можно сделать. –
Если вы используете 'lower' в' prepare_ ', и поле является фасетным полем, в интерфейсе фасетов он будет возвращать элементы нижнего регистра, которые выглядят уродливо:/ –
Amyth