2012-08-02 65 views
0

我正在尝试在django网站上使用django-haystack与xapian后端建立搜索功能。我跟着方向按: http://django-haystack.readthedocs.org/en/latest/tutorial.htmldjango-haystack给出错误无法在搜索处打开索引/ xapian/xapian_index

当我输入一个搜索它抛出的错误: 无法打开在搜索索引/的Xapian/xapian_index

看来,当我跑 没有搜索索引创建./manage.py rebuild_index 但是,当时没有错误报告。

我试图指数的myapp/models.py以下模型:

class MyMsg (models.Model): 
    msg = models.TextField(max_length=2000) 
    pub_date = models.DateTimeField('date published') 
    author = models.ForeignKey(User) 
    def __unicode__(self): 
     return self.msg 

我在MYAPP/search_index.py以下搜索索引:

class MyMsgIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True) 
    author = indexes.CharField(model_attr='author') 
    pub_date = indexes.DateTimeField(model_attr='pub_date') 

    def get_model(self): 
     return MyMsg 

    def index_queryset(self): 
     """Used when the entire index for model is updated.""" 
     return self.get_model().objects.filter(pub_date__lte=datetime.datetime.now()) 

我使用: 草垛1.2.4 的Xapian 1.2.12 MAC OS X 10.6.8

提前感谢您帮助。

+0

当你运行'rebuild_index'时,你看到它有多少个模型索引的统计信息?我注意到教程没有明确创建任何模型对象。 – 2012-08-02 01:42:19

+0

python manage.py rebuild_index的输出是:WARNING:这将无法从连接“default”的搜索索引中删除所有东西。 之后您的选择是通过'rebuild_index'命令从备份中恢复或重建。 您确定要继续吗? [y/N] y 删除索引中的所有文档,因为您这样说。 删除所有文件。 – Roland 2012-08-02 01:56:19

+0

就是这样?你是否创建了任何'Note'对象(或者你选择索引的任何模型)? – 2012-08-02 01:58:53

回答

0

你说你在使用Haystack 1.2.4,但是你链接到了新的2.x beta文档。在早期版本的Haystack中,您需要添加一个“自动发现”步骤。

它涉及在settings.py中创建一个名为HAYSTACK_SITECONF的变量,该变量指向干草堆配置模块。内部的模块,你需要有至少这些行:

import haystack 
haystack.autodiscover() 

请参阅您的版本的教程: http://django-haystack.readthedocs.org/en/v1.2.4/tutorial.html

难道这是问题吗?

+0

感谢您指出不一致性,我没有注意到它。我尝试将HAYSTACK_SITECONF添加到我的settings.py和autodiscover中,但是出现以下消息:'django.core.exceptions.ImproperlyConfigured:HAYSTACK_SITECONF设置不再使用d&可以被移除。“并且xapian_index仍然没有被创建。 – Roland 2012-08-03 00:45:41

+0

你知道你有什么版本的干草堆吗? – 2012-08-03 01:00:17

+0

下载的文件在名称中有'v1.2.0'(不知道我在哪里看到1.2.4),但'haystack/__ init __。py'有'__version__ =(2,0,0,'beta')这行解释了为什么'HAYSTACK_SITECONF'标记了一个错误。 2.0.0版是否可以工作,还是应该恢复到旧版本? – Roland 2012-08-03 02:10:01