2013-04-18 102 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