2012-10-24 56 views
2

嘗試運行./manage.py build_solr_schemaDjango的草堆:錯誤試圖建立Solr模式

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) 

我m在本地運行並使用簡單的後端。創建作者索引後,我能夠運行build_solr_schema。但是,當我設置書籍索引並試圖再次運行它時,我收到了錯誤。

的Django 1.4.2, 草堆1.2.7

任何想法?

回答

1

我在本地運行此程序並使用簡單後端。

,你必須選擇Solr的後端和配置草垛使用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 配置草堆

此外,即時通訊假設草垛的1.2.7版本B/C在乾草堆的2.0.0 beta版本我有麻煩用build_solr_schema返回無效的schema.xml。

+0

的HAYSTACK_SITECONF和其他設置不再作爲Django的草垛2.0 –

+0

我的回答包括它的意思爲乾草堆的版本 - 我忽略V2 B/C是在當時的β-馬車。不過值得注意的是,v2。+是它現在的地方,而且很多已經發生了變化。 –