2

尝试运行时出现以下错误./manage.py build_solr_schema

NotImplementedError: Subclasses must provide a way to build their schema.

这是我的两个搜索索引的样子:

class BookSearchIndex (SearchIndex):
    text = CharField(document=True, use_template=True)
    title = CharField(model_attr='title_web', boost=1.125)

    def index_queryset(self):
        return Book.objects.active().filter(publish_level='published')

site.register(Book, BookSearchIndex)


class AuthorSearchIndex (SearchIndex):
    text = CharField(document=True, use_template=True)
    name = CharField(model_attr='name_display', boost=1.5)

    def index_queryset(self):
        return Author.objects.approved()

    def prepare(self, obj):
        data = super(AuthorSearchIndex, self).prepare(obj)
        data['boost'] = 1.5
        return data

site.register(Author, AuthorSearchIndex)

我在本地运行它并使用简单的后端。build_solr_schema创建作者索引后,我能够运行。但是当我设置书籍索引并尝试再次运行它时,我得到了提到的错误。

Django 1.4.2,干草堆 1.2.7

有任何想法吗?

4

1 回答 1

1

我在本地运行它并使用简单的后端。

您必须选择solr后端并配置 haystack 以使用build_solr_schema命令。

HAYSTACK_SITECONF = 'search_sites'
HAYSTACK_SEARCH_ENGINE = 'solr'
HAYSTACK_SOLR_URL = '0.0.0.0:8983' #your solr server's address

请参阅 http://django-haystack.readthedocs.org/en/v1.2.7/installing_search_engines.html#solr 安装 solr 和 http://django-haystack.readthedocs.org/en/v1.2.7/tutorial.html# modify-your-settings-py 用于配置 haystack

此外,我假设 haystack b/c 的 1.2.7 版本在 haystack 的 2.0.0 beta 版本中我遇到了build_solr_schema返回无效 schema.xml 的问题。

于 2012-11-05T17:02:48.360 回答