0

私は 600.000 のドキュメントを持つ Solr サーブレットを持っています。各ドキュメントには約 10 ~ 30 の多値フィールドが含まれています。バージョン 3.6 の Solr には更新機能がないため、ドキュメントを更新するために問題が発生しています。やりたいこと: やりたいこと: ドキュメントに挿入する必要があるフィールドだけが必要なアプリが必要です。例えば:

Document1( フィールド 1 / 値 1, フィールド 2 / 値 2)

このドキュメントに field3 / value3 を挿入したいと思います。今のところ、次のようにする必要があります。

Document1( フィールド1 / 値1, フィールド2 / 値2, フィールド3 / 値3)

各ドキュメントのフィールド数が多いため、上記のように他のすべてのフィールドを知る必要なく、field3 / value3 を追加したいだけです。

Document1( フィールド 3 / 値 3)

そのため、最初に Solr からすべてのデータを自動的に取得し、ドキュメントに挿入する必要がある 1 つのフィールドを追加するアプリケーションを作成しました。フィールドに 'ä' 'ö' 'ü' などの値が含まれるドキュメントを操作するまでは、すべてがうまくいきました。エラーを返すよりもSolr:

org.apache.solr.common.SolrException: 無効な UTF-8 開始バイト 0xfc

これは上記の投稿されたキャラクターが原因であることがわかりました。したがって、入力ストリームがどのエンコーディングであるかを知りたいと思ったのですが (これには juniversalchardet を使用しました)、エンコーディングが WINDOWS-1252 であることが指摘されました。私のアプリケーションは、Solr ライブラリを使用せずに Java で作成されています (標準の http ライブラリと xml 処理用の javax のみ)。エンコーディングが変更された場所と、それを回避する方法はありますか? サーブレットが Windows マシンで実行されているため、それは Java ですか、それともそうですか?

助けてくれてありがとう!

編集: Solrj ライブラリを使用する必要がありますか? これが私の問題を回避するかどうか誰かが知っていますか?

4

1 に答える 1

0

いくつかの調査の後、私は自分の問題を見つけました。同じ問題を抱えている可能性のあるすべての人に共有したいと思います. 入力ストリームは、実行中のシステムに依存しているようです。ご想像のとおり、私は Windows マシンを使用しています。出力ストリームを UTF-8 に設定するだけで済みます。これは、Solr がドキュメントのインデックスを再作成するために使用されます。変更を文書化する必要があったため、FileOutputStream を使用しました。したがって、私の不足しているコードは次のとおりです。

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("Updatefiles/"+uuid+".xml"),"UTF-8");

ほぼすべてのストリームのエンコーディングを選択できます。私はこのパラメータについて知らなかったので、この問題に直面するすべての人のために -> 出力ストリームのエンコーディングを設定してください。

于 2012-08-31T11:44:32.863 に答える