【发布时间】:2012-07-30 22:42:49
【问题描述】:
我正在尝试使用带有 xapian 后端的 django-haystack 在我的 django 网站上设置搜索功能。我按照以下说明进行操作: http://django-haystack.readthedocs.org/en/latest/tutorial.html
当我输入搜索时,它会引发错误: 无法在 search/xapian/xapian_index 处打开索引
我运行时似乎没有创建搜索索引 ./manage.py 重建索引 不过当时没有报错。
我正在尝试在 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
提前感谢您的帮助。
【问题讨论】:
-
当您运行
rebuild_index时,您是否看到有关它已索引多少模型的统计信息?我注意到本教程没有关于显式创建任何模型对象的步骤。 -
python manage.py rebuild_index 的输出是:警告:这将不可挽回地从连接“默认”中的搜索索引中删除所有内容。在此之后您的选择是从备份中恢复或通过
rebuild_index命令重建。您确定要继续吗? [y/N] y 删除索引中的所有文档,因为您这么说。已删除所有文档。 -
就这样?那么您是否创建了任何
Note对象(或您选择索引的任何模型)? -
我猜你的数据库中没有任何
Note对象,因此rebuild_index没有找到任何工作要做,因此你的 xapian 索引没有得到建成。 -
我没有看到任何对笔记对象的引用。你能解释一下吗?
标签: django django-haystack xapian