2013-04-18 106 views
2

使用django-haystack 2.0.0和xapian-haystack 2.0.0,遷移了1.1.5中的所有代碼,如docs中所述。 現在我search_indexes.py樣子:Django-haystack沒有更新索引

from haystack import indexes 
from app.models import Post 

class PostIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True) 

    def get_model(self): 
     return Post 

    def index_queryset(self, using=None): 
     """Used when the entire index for model is updated.""" 
     return self.get_model().objects.filter(visible=True) 

但是,當我去rebuild_index,它說:

你確定要繼續嗎? [y/N] y

刪除索引中的所有文檔,因爲您這樣說。全部刪除了 文件。

隨着冗長:

Skipping '<class 'django.contrib.auth.models.Permission'>' - no index. 
Skipping '<class 'django.contrib.auth.models.Group'>' - no index. 
... 
Skipping '<class 'app.models.Post'>' - no index. 

所以,我不知道爲什麼大海撈針沒有索引這種模式。

回答

1

你有實際字段添加到您的索引,因此在「文本」增加:

post1 = indexes.CharField(model_attr='postfield1', null=True) 

,然後在post_text.txt索引文件的模板:

{{object.post1}} 

現在它應該工作。

+0

謝謝,我會試試這個。 – amureki 2014-03-07 10:36:35

1

你還沒有加入哪些字段要搜索的內容,在您的

search_indexes.py

文件。 你要做這樣的:

class PostIndex(indexes.SearchIndex, indexes.Indexable): 
text = indexes.CharField(document=True, use_template=True) 
data = indexes.CharField(model_attr='data', blank=True, null=True) 

def get_model(self): 
    return Post 

def index_queryset(self, using=None): 
    """Used when the entire index for model is updated.""" 
    return self.get_model().objects.filter(visible=True) 

,然後創建一個目錄結構像templates/search/indexes/'app_name'/post_text.txt。現在運行命令./manage.py rebuild_index