Apache Solr文件未被索引或上传"

时间:2015-06-12 00:42:46

标签: java curl solr solrj

我正在使用apache Solr和Java来尝试索引某些文件。我使用Java和solrj都没有成功。我使用的是5.2版本,但我也试过5.1而没有成功

我可以使用curl发送文件进行索引,然后我可以使用Solr成功搜索此文件。这是我使用的命令:

curl "http://solraddress/solr/my_core/update/extract?literal.id=testdoc&commit=true" -F "testfile=@/Users/lesson2.pdf"

如上所述,我可以搜索此文件并获取它。

使用solrj我试图使用此代码发送索引文件:

ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");

req.addFile(myFile, "application/octet-stream");
req.setParam("literal.id", "testfile1.pdf");
req.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);

NamedList<Object> result = solr.request(req);
System.out.println("Result: " + result);

这会产生此错误:

Error adding field 'stream_size'='null' msg=For input string: "null" using ContentStreamUpdateRequest

我无法找到该错误的解决方案,所以我说,我只是制作自己的包装器来做到这一点。我收到了curl请求的标题,其中包括:

> POST solr/my_core/update/extract?literal.id=testdoc&commit=true HTTP/1.1
> User-Agent: curl/7.37.1
> Host: MyHost
> Accept: */*
> Content-Length: 220
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------aad460cc324256ec

并构建了一个POST请求以包含这些标头和请求正文中的多部分文件,这样做会给我200响应和正文:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">137</int></lst>
</response>

这似乎是一个积极的回应,因为它匹配我的curl请求给我的响应,但该文件似乎没有被索引,因为我在solr上找不到它。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:2)

这是Solr 5中的一个错误.Solr JIRA上有一张打开的票证来解决这个问题:

SOLR-7498: Error adding field 'stream_size'='null' msg=For input string: "null" using ContentStreamUpdateRequest