У меня есть проект, основанный наНевозможно найти часть слагаемого с Джанго Хейстек и Elasticsearch
Django==1.9.2
django-haystack==2.4.1
elasticsearch==2.2.0
очень простой вид поиска:
def search_view(request):
query = request.GET.get('q', '')
sqs = SearchQuerySet().filter(content=query)
params = {
'results': sqs,
'query': query,
}
return render_to_response('results.html', params,
context_instance=RequestContext(request))
Мой индекс поиска просто:
class CategoryIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr='name')
def get_model(self):
return Category
def index_queryset(self, using=None):
return self.get_model().objects.filter(published=True)
файл category_text.txt
просто:
{{ object.name }}
В моей базе данных у меня есть несколько пунктов:
- Acqua
- Acquario
- Ачето
- Accento
Когда я ищу с моей точки зрения, у меня есть странное поведения.
Ищет по запросу "ac" Я не получил никаких результатов! Я ожидал иметь все мои предметы. Я попытался изменить запрос, используя
.filter(content__contains=query)
(я знаю, что это значение по умолчанию!), Но ничего не изменилось.Поиск с запросом «acqua» Я получаю 1 результат (правильный) с объектом результата, но когда я пытаюсь его распечатать, поле
result.object
-None
(другие поля содержат правильную информацию).
Что я делаю неправильно? Спасибо.
UPDATE
Я нашел решение моей проблемы номер 2. Последнюю версию Хейстекла от PyPi не Django 1.9.x совместимы. Я только что добавил -e git+https://github.com/django-haystack/django-haystack.git#egg=django-haystack
в свой файл requirements.txt, и проблема исправлена. Подробнее об этом на GitHub: https://github.com/django-haystack/django-haystack/issues/1291
Остальные проблемы все еще открыты, и я не могу найти для этого решения.
Мой пример был всего лишь примером более сложного случая. Обычно я использую более 3 символов, и я попытался использовать поле EdgeNgramField. –
Похоже, что установка Elasticearch по умолчанию для Haystack не выходила из коробки. [Помогает ли эта ссылка?] (Https://wellfire.co/learn/custom-haystack-elasticsearch-backend/) Похоже, что что-то подобное было [упаковано, чтобы помочь в этих случаях.] (Https: // github .com/bennylope/elasticstack) – Tom