2012-04-18 116 views
1

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

有没有一种方法可以直接在命令中通过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 

我找不到任何有关通过post.jar将数据添加到solr而不是外部xml文件的任何文档或示例。 尽管删除作品:

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

在此先感谢您。

+0

那么,在Windows上安装CURL很容易。您还可以将主要语言的CURL的所有功能与libCURL一起嵌入。在您喜欢的语言中有HTTP客户端语言,例如:urllib2和Python的请求。 – aitchnyu 2012-04-19 06:48:29

+0

很高兴知道,请检查一下。谢谢! – Chris 2012-04-19 13:36:04

回答

3

好吧,我已经想通了。对于任何人谁可能在将来遇到这样的:

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

确保你双引号中的XML标记,并用“\”逃离内部变量双引号。例如,我双引号从<add></add>的xml标签。另外,我不得不绕过ID的引号。请务必对所有字段进行此操作并提交。

此外,如果您使用java进行开发,请确保您为斜杠和引号都转义。举例来说,在我的ProcessBuilder字符串中的最后一个参数是我的标签看起来像:

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

注意额外的斜杠在Java中逃脱。

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

+0

感谢您的分享。它给了我一个解决方案,像pdf文档索引文件到solr。 – 2015-12-28 03:29:42