Haystack-Whoosh没有索引任何文件

时间:2014-02-18 22:05:03

标签: django django-haystack whoosh

我按照Haystack教程设置了Whoosh

>>> pip install whoosh

settings.py

import os
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'),
    },
}

我得到一个空列表

>>> list(ix.searcher().documents())
[]

以下是 searcher_indexes.py

的代码
from haystack import indexes
from view_links.models import Projdb

class ProjdbIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    title = indexes.CharField(model_attr='title')
    author = indexes.CharField(model_attr = 'owner')
#   pub_date = indexes.DateTimeField(model_attr='date_start')

    def get_model(self):
        return Projdb

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

我以前能够获得弹性搜索的结果但是当我转移到Whoosh时我没有得到任何结果。

感谢您的时间。如果您需要更多信息,请告诉我。

修改

我现在正在取得成果,这是我学到的两件事。

  1. 我需要注册其模型用于编制索引的应用程序。
  2. 如果模型的类在search_indexes.py中拼写错误,则运行 python manage.py rebuild_index 不会抛出任何错误,您将获得零索引对象

1 个答案:

答案 0 :(得分:1)

你运行了命令吗?

./manage.py rebuild_index

您有任何Projdb记录吗?

你的代码中有这个:

text = indexes.CharField(document=True, use_template=True)

您是否设置了相应的模板(projdb_text.txt)?