2012-04-18 23 views
1

私はWindows7上でSolrを実行しており、cmdではCurlを使用できないため、post.jarを使用しています。 (はい、私はCygwinとMingwを使用しますが、このシナリオではcmd.exeに固執したいと思います)。post.jar経由でドキュメントを追加する

xmlドキュメントを作成してコマンドにxmlドキュメントを追加するのではなく、post.jar経由でドキュメントのタグを直接コマンドに追加する方法はありますか?私はxmlファイルに以下のタグを追加する場合

具体的に、文書が美しくアップロードされます:

<add><doc><field name="id">50</field><field name="title">Test Title</field><field name="author">Dan</field><field name="content">Test using post.jar </field></doc></add> 

しかし、私は、コマンドで同じタグを追加しようとした場合、それは私の悪い要求を送信しますエラー:Cmdをで

入力:

java -Ddata=args -jar post.jar "<add><doc><field name="id">50</field><field name="title">Test Title</field><field name="author">Dan</field><field name="content"> 
Test using post.jar </field></doc></add>" 

戻り値:

SimplePostTool: FATAL: Solr returned an error: Bad Request 

外部XMLファイルではなく、post.jarを使用してsolrにデータを追加する際のドキュメントや例は見つかりません。 の削除はしかし素晴らしい作品:

java -Ddata=args -jar post.jar '<delete><id>42</id></delete>' 

は、事前にありがとうございます。

+0

Windowsでは、CURLのインストールは簡単です。主要言語のlibCURLにCURLのすべての機能を組み込むこともできます。あなたの好きな言語でHTTPクライアント言語があります。例:urllib2とPythonのリクエスト。 – aitchnyu

+0

それは知っていることは素晴らしいです、病気をチェックしてください。ありがとうございました! – Chris

答えて

3

さて、私はそれを理解しました。将来的にはこのに遭遇することがあり、誰のために:

java -Ddata=args -jar post.jar "<add><doc><field name=\"id\">17</field></doc></add>" 

あなたがXMLタグを引用し、「\」で内部タグ二重引用符をエスケープ倍増を確認してください。たとえば、私はxmlタグを<add>から</add>に二重引用符で囲みました。また、私はフィールドidの周りの引用符をエスケープしなければならなかった。すべてのフィールドでこれを行うことを忘れないでください。

さらに、Javaで開発している場合は、スラッシュと引用符の両方をエスケープしてください。例えば、私のProcessBuilderを文字列の最後の引数は次のようになり、私のタグです:

"<add><doc><field name=\\\"id\\\">17</field></doc></add>" 

は予告Javaでの脱出のための余分なスラッシュ。

私はこれが誰かを助けることを願っています...幸運!

+0

共有いただきありがとうございます。それは私にpdf docのような文書をsolrに索引付けする解決策を与えました。 –

関連する問題