django-haystack和solr setup问题(未定义的字段文本错误)

时间:2012-07-18 17:16:32

标签: solr django-haystack

我是Solr的新手。我一直在关注http://haystacksearch.org/网站提供的文档。 我的项目是关于django 1.4。

我遵循的步骤:

1.为已安装的应用添加了haystack。

2.使用

修改settings.py
HAYSTACK_SITECONF = 'directory.search_sites'
HAYSTACK_SEARCH_ENGINE = 'solr'
HAYSTACK_SOLR_URL = 'http://127.0.0.1:8983/solr'
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://127.0.0.1:8983/solr'
        # ...or for multicore...
        # 'URL': 'http://127.0.0.1:8983/solr/mysite',
        },
}

3.我的search_indexes.py文件

from haystack import indexes
from app.models import SellerItem


class SellerItemIndex(indexes.SearchIndex):
    text = indexes.CharField(document=True, use_template=True)
    title = indexes.CharField(model_attr='title')
    sub_title = indexes.CharField(model_attr='sub_title')
    description = indexes.CharField(model_attr='description')

    def get_model(self):
        return SellerItem

    def index_queryset(self):
        """Used when the entire index for model is updated."""
        return self.get_model().objects.filter(pk__gt=0)

4.Added search_sites.py

import haystack
haystack.autodiscover()

5.added templates / search / indexes / selleritem.txt

{{ object.title }}
{{ object.sub_title }}
{{ object.description }}

6.将此添加到urls.py:

(r'^search/', include('haystack.urls')),

7.Created搜索模板

8.使用以下命令将生成的xml替换为apache-solr-3.6.0 / example / solr / conf中的schema.xml:

python manage.py build_solr_schema

当我启动solr服务器时,我收到这样的错误:

SEVERE: org.apache.solr.common.SolrException: undefined field text
at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1330)
at org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getAnalyzer(IndexSchema.java:408)
at org.apache.solr.schema.IndexSchema$SolrIndexAnalyzer.reusableTokenStream(IndexSchema.java:383)
at org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:574)
at org.apache.solr.search.SolrQueryParser.getFieldQuery(SolrQueryParser.java:206)
at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1429)
at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1317)
at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1245)
at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1234)
at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:206)
at org.apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.java:79)
at org.apache.solr.search.QParser.getQuery(QParser.java:143)
at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:105)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:165)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
at org.apache.solr.core.QuerySenderListener.newSearcher(QuerySenderListener.java:59)
at org.apache.solr.core.SolrCore$3.call(SolrCore.java:1182)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)

服务器仍将启动 当我执行./manage.py rebuild_index并进行搜索时,我会收到错误日志

Problem accessing /solr/select/. Reason:undefined field text

我错过了什么?之前有没有人遇到同样的问题?

谢谢

1 个答案:

答案 0 :(得分:2)

我认为您的问题源于错误命名的模板。您使用search/indexes/selleritem.txt,但应该是search/indexes/app/selleritem_text.txt

作为旁注,我看到你正在混合Haystack 1.X和2.X设置和方法。由于indexes.Indexable搜索索引类中缺少SellerItemIndex mixin,您实际上必须使用1.X.如果你坚持使用你正在使用的版本的文档,你的生活会更简单。

希望有所帮助,