Фильтр Haystack's SearchQuerySet(). Ничего не делает (Whoosh 2.4.1, Django-haystack 1.2.7)

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_title является True, Я тоже побежал python manage.py rebuild_index после применения фильтра. Почему фильтр не работает?

я использую Whoosh 2.4.1, Django-haystack 1.2.7 а также Django 1.4,

Если кто-то может просто подтвердить, что они могут успешно использовать SearchQuerySet().filter с Whoosh 2.4 а также Django-haystack 1.2.7 это уже было бы большой помощью.

1 ответ

Решение

Кажется, что 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)
Другие вопросы по тегам