django haystack出现错误,无法在search/xapian/xapian_索引处打开索引
我正在尝试使用django haystack和xapian后端在django站点上设置搜索功能。我按照以下说明进行操作: 当我输入搜索时,它会抛出错误: 无法在搜索/xapian/xapian\u索引处打开索引 当我运行时,似乎没有创建搜索索引 ./manage.py重建索引 但是,当时没有报告任何错误 我正在尝试在myapp/models.py中为以下模型编制索引:django haystack出现错误,无法在search/xapian/xapian_索引处打开索引,django,django-haystack,xapian,Django,Django Haystack,Xapian,我正在尝试使用django haystack和xapian后端在django站点上设置搜索功能。我按照以下说明进行操作: 当我输入搜索时,它会抛出错误: 无法在搜索/xapian/xapian\u索引处打开索引 当我运行时,似乎没有创建搜索索引 ./manage.py重建索引 但是,当时没有报告任何错误 我正在尝试在myapp/models.py中为以下模型编制索引: class MyMsg (models.Model): msg = models.TextField(max_leng
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
提前感谢您的帮助。您说您正在使用Haystack 1.2.4,但您链接到了新的2.x测试版文档。在Haystack的早期版本中,您需要添加一个“自动发现”步骤 它涉及到在
settings.py
中创建一个名为HAYSTACK\u SITECONF
的变量,该变量指向一个HAYSTACK配置模块。在该模块中,您至少需要有以下几行:
import haystack
haystack.autodiscover()
有关您的版本,请参见教程:
这可能是问题所在吗?当您运行
rebuild\u index
时,您是否看到了它索引了多少个模型的统计信息?我注意到教程没有明确创建任何模型对象的步骤。python manage.py rebuild_index的输出是:警告:这将不可修复地删除连接“default”中搜索索引中的所有内容。在此之后,您可以选择从备份中恢复或通过rebuild\u index
命令进行重建。您确定要继续吗?[y/N]y因为您这样说而从索引中删除所有文档。所有文件都被删除了,就这样?那么,您是否创建了任何Note
对象(或您选择索引的任何模型)?我猜您的数据库中没有任何Note
对象,因此rebuild\u index
没有找到任何要做的工作,因此您的xapian索引没有生成。我没有看到任何对Note对象的引用。你能解释一下吗?谢谢你指出不一致的地方。我没有注意到。我尝试将HAYSTACK_SITECONF添加到我的settings.py和autodiscover中,但出现以下消息:django.core.exceptions.impropertlyconfigured:HAYSTACK_SITECONF设置不再使用并且可以删除。
和xapian_索引仍未创建。您知道HAYSTACK的版本吗?下载的文件在name(不确定我在哪里看到了1.2.4),但是haystack/\uuuuu init\uuuuuuuuuuuuy.py
有一行\uuuuuuuu版本=(2,0,0,'beta')
,这解释了为什么haystack\u SITECONF
标记了一个错误。2.0.0版可以使用吗?还是应该恢复到旧版本?我没有2.x版的经验,但应该可以使用。我使用1.2.x版本的Xapian,它对我来说运行非常好。我不认为我们可以在StackOverflow上找到这个问题的根源。我们可以在聊天室或IRC上尝试一些东西。Haystack作者在#Haystack频道的IRC(freenode)中提供了很大的支持