1

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.7Django 1.4います。

誰かがでうまく使用できることを確認できればSearchQuerySet().filterWhoosh 2.4これDjango-haystack 1.2.7はすでに大きな助けになります。

4

1 に答える 1

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)
于 2013-01-19T14:21:03.513 に答える