我正在使用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上找不到它。
有人有任何想法吗?
答案 0 :(得分:2)
这是Solr 5中的一个错误.Solr JIRA上有一张打开的票证来解决这个问题: