1

Windows7でSolrを実行していますが、cmdでCurlを使用できないため、post.jarを使用しています。(はい、CygwinとMingwを使用していますが、このシナリオではcmd.exeを使用したいと思います)。

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>'

前もって感謝します。

4

1 に答える 1

3

さて、私はそれを理解しました。将来これに遭遇する可能性のある人のために:

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

xmlタグを二重引用符で囲み、内部タグの二重引用符を「\」でエスケープしてください。たとえば、から<add>へのxmlタグを二重引用符で囲みました</add>。また、フィールドIDの前後の引用符をエスケープする必要がありました。必ずすべてのフィールドでこれを行うと、送信されます。

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

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

Javaでエスケープするための余分なスラッシュに注意してください。

これが誰かの助けになることを願っています...頑張ってください!

于 2012-04-19T01:01:59.660 に答える