SearchQuerySet在django-haystack中的奇怪行为

时间:2014-11-22 06:19:56

标签: django django-haystack

我需要通过django-haystack(2.3.1)和elasticsearch后端(1.4.0)设置简单的文本搜索。

我有下一个简单的模型:

class Course(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField()
    price = models.PositiveIntegerField()

SearchIndex看起来像这样:

class CourseIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    price = models.IntegerField(model_attr='price')

模板course_text.txt

{{ object.name }}
{{ object.description }}

如您所见,一切都很简单。我只需要干草堆就可以了:

SearchQuerySet.filter(text='zza')让我回复[ <Course: Pizza> , <Course: Freezza>],就像django orm&#39; QuerySet一样。但相反,我一无所获。使用SearchQuerySet.filter(text='pizza')返回结果

官方文档说,从2.0开始,haystack默认使用contains方法进行过滤。明确地使用它也无济于事:SearchQuerySet.filter(text__contains='zza')

haystack的

autocomplete功能也没有帮助,因为它更像starts_with方法,而不是contains

然后我也尝试使用其他后端。我测试了Whoosh但得到了与elasticsearch相同的结果。在绝望中,我已插入SimpleBackend,这只是为了在大海捞针中进行测试而且有效!

请大家,如果您有任何想法如何解决这个问题,请在这里与他们分享。

从我的观点来看,后端配置似乎是haystack提供弹性搜索和飞快移动的问题。

谢谢

0 个答案:

没有答案