Haystack的SearchQuerySet()。过滤器没有做任何事情(Whoosh 2.4.1,Django-haystack 1.2.7)

时间:2013-01-08 13:39:54

标签: django django-haystack whoosh

views.py (相关部分)

srch = request.GET.get('search', "") 
sqs = SearchQuerySet().filter(has_title=True)
clean_query = sqs.query.clean(srch)
results = sqs.raw_search(clean_query)

search_indexes.py

from haystack.indexes import *
from haystack import site
from myproject.myapp.models import Person

class PersonIndex(SearchIndex):
    text = CharField(document=True, use_template=True)
    name = CharField(model_attr='name')    
    has_title = BooleanField(model_attr='has_title')

site.register(Person, PersonIndex)

models.py

class Person(models.Model):
    name = models.CharField(max_length=50) 
    has_title = models.BooleanField()

    def __unicode__(self):
        return u'%s' % self.name

搜索时,我会从完整模型中获取结果,而不是仅has_titleTrue的条目。应用过滤器后,我也运行了python manage.py rebuild_index。为什么过滤器不起作用?

我正在使用Whoosh 2.4.1Django-haystack 1.2.7Django 1.4

如果有人可以确认他们可以成功使用SearchQuerySet().filter Whoosh 2.4Django-haystack 1.2.7,那么这已经是一个很大的帮助。

1 个答案:

答案 0 :(得分:2)

似乎raw_search(clean_query)只会再次返回sqs中的每个项目(不知道为什么),使用filter(content=clean_query)获取预期结果。

srch = request.GET.get('search', "") 
sqs = SearchQuerySet().filter(has_title=True)
clean_query = sqs.query.clean(srch)
result = sqs.filter(content=clean_query)