1

django ベースの Web サイトに検索を実装しようとしています。

チュートリアルに従っているときに、これを見つけました:

Solr バックエンドを使用している場合は、追加の手順があります。Solr の構成は XML ベースであるため、スキーマを手動で再生成する必要があります。run ./manage.py build_solr_schemaまず、Solr の schema.xml ファイルに XML 出力をドロップし、Solr サーバーを再起動する必要があります。

まず、schema.xml をどこに置くべきかわかりません。いくつかの調査の後、プロジェクト内にフォルダーを作成して配置することにしましたmyprojectname/solr/schema.xml。そうですか?

次に、Solr を再起動するにはどうすればよいですか?

アップデート

Solrをダウンロードして解凍し、生成されたschema.xmlを内部に配置しましたexample/solr/conf

次に、solrを開始しますjava -jar start.jar

しかし、インデックスを作成しようとすると: ./manage.py rebuild_index

私は得る:

WARNING: This will irreparably remove EVERYTHING from your search index.
Your choices after this are to restore from backups or rebuild via the `rebuild_index` command.
Are you sure you wish to continue? [y/N] y

Removing all documents from your index because you said so.
All documents removed.
Indexing 1 News.
Failed to add documents to Solr: [Reason: None]
<response><lst name="responseHeader"><int name="status">400</int><int    name="QTime">4</int></lst><lst name="error"><str name="msg">ERROR: [doc=news.news.2]   unknown field 'django_id'</str><int name="code">400</int></lst></response>
Indexing 1 entries.

Failed to add documents to Solr: [Reason: None]
<response><lst name="responseHeader"><int name="status">400</int><int name="QTime">17</int></lst><lst name="error"><str name="msg">ERROR: [doc=zinnia.entry.2] unknown field 'django_id'</str><int name="code">400</int></lst></response>

schema.xml を確認しましたが、次のものがあります。

<field name="django_ct" type="string" indexed="true" stored="true" multiValued="false" />
<field name="django_id" type="string" indexed="true" stored="true" multiValued="false" />

PS 私はDjango 1.2とHaystack 1.2.7を使用しています

4

2 に答える 2

1

solr サーバーには、django ではなく schema.xml のコピーが必要です。私は通常、バージョン管理のために自分の django プロジェクトに schema.xml のコピーを保持していますが、solr はそこにそれを見つけることができません。

Solrサーバーはローカルですか?ホスト型またはリモートの Solr サービスを使用していますか? 私はローカルで開発し、websolr b/ci を使用します。本番用に solr を構成したくありません。

OSX のローカル dev の場合

これは OSX でのローカル開発であり、homebrew がインストールされていると仮定しています (仮定 - そうでない場合は詳細を教えてください):

brew install solr

これにより、次のような場所に Solr がインストールされます。/usr/local/Cellar/solr/...

注: ローカルで開発しているときは、デプロイといくつかのスタートアップ タスクを実行するためにファブリックを使用するのが好きです。

したがって、fabfile.py には、schema.xml を適切なファイルにコピーし、solr サーバーを起動するためのファブリック コマンドがあります (コマンドfab solrラインで実行するだけです)。

def solr() :
    # build a new updated schema.xml (changes to indexes/models may require this so always do it for local testing)
    local('python manage.py build_solr_schema > schema.xml')
    # copy the schema.xml into the proper directory
    local('cp schema.xml /usr/local/Cellar/solr/3.6.0/libexec/example/solr/conf/schema.xml')
    # start the solr server
    local('cd /usr/local/Cellar/solr/3.6.0/libexec/example && java -jar start.jar')

注: ファブリックを使用しない場合は、コマンド ラインでこれらのコマンドを実行できます。

于 2012-11-05T16:49:08.410 に答える
0

同じ問題があり、再構築タスクが失敗しました。私にとっての解決策は次のとおりです。

  1. 新しい schema.xml を作成し、対応するフォルダーに配置します。

  2. Solrを再起動します

  3. 問題なくインデックスを再構築する

于 2014-01-16T08:59:11.627 に答える