通过post.jar添加文档

时间:2012-04-18 16:58:23

标签: solr lucene

我在Windows7上运行Solr,无法在cmd上使用Curl,因此我使用的是post.jar。 (是的,我使用Cygwin和Mingw,但是想在这种情况下坚持使用cmd.exe。)

有没有办法可以通过post.jar直接在命令中添加文件,而不是创建一个xml文档,然后将xml doc添加到命令中?

具体来说,如果我在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

我找不到任何关于通过post.jar向solr添加数据的文档或示例,而不是外部xml文件。 删除效果很好:

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

提前谢谢。

1 个答案:

答案 0 :(得分: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中转义的额外斜杠。

我希望这可以帮助那里的人...祝你好运!