0

私はSolrが初めてです。http://haystacksearch.org/サイトで提供されているドキュメントに従っています。私のプロジェクトはdjango 1.4です。

私が従った手順:

1.インストール済みアプリにヘイスタックを追加。

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.search_sites.pyを追加

import haystack
haystack.autodiscover()

5.templates/search/indexes/selleritem.txtを追加

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

6.これをurls.pyに追加しました:

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

7.検索テンプレートの作成

8.次のコマンドを使用して、apache-solr-3.6.0/example/solr/conf の schema.xml を生成された 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

私は何を取りこぼしたか?誰かが以前に同じ問題を抱えていましたか?

ありがとうございました

4

1 に答える 1

2

あなたの問題は間違った名前のテンプレートに起因していると思います。を使用search/indexes/selleritem.txtしますが、である必要がありますsearch/indexes/app/selleritem_text.txt

ちなみに、Haystack1.Xと2.Xの設定とメソッドを混在させているようです。indexes.Indexable検索インデックスクラスにミックスインがないため、SellerItemIndex実際には1.Xを使用している必要があるようです。使用しているバージョンのドキュメントに固執すれば、あなたの生活はよりシンプルになります。

お役に立てば幸いです。

ベン

于 2012-07-19T04:44:24.380 に答える