2013-04-10 39 views
2
Error is as follows : 
[[email protected] garyTestDocs]# curl http://localhost:8983/solr/update/csv? literal.id=book2&commit --data-binary @sample.csv -H 'Content-type:text/plain; charset=utf- 8' 
[1] 16541 
bash: commit: command not found 

響應看起來是這樣的 -指數csv文件的Solr - 缺少內容流

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> 
<title>Error 400 missing content stream</title> 
</head> 
<body><h2>HTTP ERROR 400</h2> 
<p>Problem accessing /solr/update/csv. Reason: 
<pre> missing content stream</pre></p><hr /><i><small>Powered by Jetty://</small>  </i><br/>             
<br/>             
<br/>             
</body> 
</html>             

sample.csv輸入 -

module,meets,question,response 
General Questions,,"Please provide us a detailed company background","We are great" 

schema.xml中 -

<field name="module" type="text" indexed="true" stored="true" /> 
<field name="meets" type="text" indexed="true" stored="true" /> 
<field name="question" type="text" indexed="true" stored="true" /> 
<field name="response" type="text" indexed="true" stored="true" /> 

solrconfig.xml

<!-- CSV update handler, loaded on demand --> 

    <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy"> 
     <lst name="defaults"> 
      <str name="separator">,</str> 
      <str name="header">true</str> 
      <str name="encapsulator">"</str> 
     </lst> 
    </requestHandler> 

另一個sample.csv

module,meets,question,response 
    General Questions,,"Please provide us a detailed company background","Yes" 

我已經啓用遠程流。我的查詢是

curl http://localhost:8983/solr/update/csv?literal.id=book12&commit=true --data-binary @sample.csv -H 'Content-type:text/plain; charset=utf-8' 

所以我做錯了什麼。請指導。

solr = 3.6.2的版本。

索引它的全部要點是能夠查詢字段?我也想知道如果一個csv文件可以被提取出來放置在各個領域的文本,我知道它將csv文件的文本放在內容字段。有關更新/提取的任何建議?我在這裏問了2個qns。謝謝。

回答

0

如果您啓用了遠程流式處理,則需要在請求中指定內容類型和文件作爲查詢參數。

這裏是Solr Wiki

爲例具體來說,您的查詢字符串看起來有點像這樣 -

curl http://localhost:8983/solr/update/csv?stream.file=<remote path>/sample.csv&stream.contentType=text/plain;charset=utf-8 

注意與遠程流,你需要確保該文件的位置是訪問Solr實例。

+0

我繼續得到相同的錯誤!什麼是內容流?我只是不明白髮生了什麼問題?我能夠爲id,作者,標題(第1行)1,sanjay,ABC(第2行),2,Ajay,XYZ(第3行)等示例csv文件建立索引。我能夠索引這個文件,但它只是不會索引上面提到的sample.csv文件用空格和引號。 – 2013-04-10 16:04:30

+0

噢 - 我錯過了報價部分 - 您將不得不在索引時避開引號。這是一個特殊的角色。 [這些特殊字符](http://wiki.apache.org/solr/FunctionQuery)需要在前面添加一個'\'字符來轉義。 – 2013-04-10 16:44:54

+0

你能否澄清?我還在想,如果你看到我的sample.csv文件上面有一個空格?這可能是一個問題嗎? – 2013-04-10 16:55:14

1

實際上只是解決了這個問題與此查詢

捲曲http://localhost.com:8983/solr/update/csv?commit=true --data二進制@ sample.csv -H「內容類型:text/plain的; charset = utf-8'

但在執行此查詢之前,我一直在獲取必需的id字段錯誤,並且會去我的查詢並提及literal.id = ABC1(一些隨機的id,這是唯一的),然後我仍然有同樣的錯誤。所以我去我的schema.xml並刪除所需的字段id的屬性,並重新啓動solr並運行上面的查詢,仍然有錯誤。所以解決方案來了,當我在我的sample.csv中創建一個ID列,並索引它。我其實不喜歡那樣!但它的工作。

0

首先從終端改變目錄找到您的CSV文件,

cd <file_path> 

curl http://localhost:8983/solr/update/csv?commit=true --data-binary @sample.csv -H 'Content-type:text/plain; charset=utf-8' 

運行此腳本。我希望解決你的問題。