2013-07-08 65 views
1

當我在SearchQuerySet上more_like_this調用之前鏈接一個過濾器時,過濾器似乎根本不應用。Haystack更像這樣忽略過濾器

from haystack.query import SearchQuerySet as sqs 
from articles.models import Article 

article = Article.objects.get(pk=4560) # Article instance of one of the many articles I have 
sqs().filter(author='[email protected]').count() # 147 - 147 documents with [email protected] so far so good 
sqs().more_like_this(article).count() #54893 
sqs().filter(author='[email protected]').more_like_this(article).count() # 54893!!! 

我認爲這樣做的:

sqs().filter(author='[email protected]').more_like_this(article) 

將限制147個過濾的文件中我的MLT搜索,但它幾乎就像過濾器被完全忽略。

我也試圖扭轉鏈的順序:

sqs().more_like_this(article).filter(author='[email protected]') 

,但它與返回的整個搜索索引

任何想法結束了?提前致謝。

這裏是我的article_text.txt

{{ object.title }} 
{{ object.body.excerpt|striptags|escape }} 

search_index.py

class ArticleIndexes(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True, boost=1.1) 
    author = indexes.CharField(model_attr='author') 
    site_id = indexes.CharField(model_attr='site_id') 
    # non-indexed, stored field 
    stored_obj = ArticleStorageField(indexed=False) 

回答