1

我在 Windows7 上运行 Solr 并且不能在 cmd 上使用 Curl 所以我使用post.jar。(是的,我使用 Cygwin 和 Mingw,但在这种情况下我想坚持使用 cmd.exe)。

有没有一种方法可以直接在命令中通过其标签通过 post.jar 添加文档,而不是创建 xml 文档然后将该 xml 文档添加到命令中?

具体来说,如果我在 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>to的 xml 标记</add>。此外,我不得不转义字段id周围的引号。确保对所有字段执行此操作,它将提交。

此外,如果您使用 java 进行开发,请确保您对斜线和引号都进行了转义。例如,我的 ProcessBuilder 字符串中的最后一个参数是我的标签,如下所示:

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

请注意用于在 java 中转义的额外斜杠。

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

于 2012-04-19T01:01:59.660 回答