2012-04-18 119 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