Apache Solr 文件未编入索引或 "uploaded"
Apache Solr file not getting indexed or "uploaded"
我正在使用 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 请求中得到了 headers,它们是:
> 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 请求来包含这些 headers 和一个多部分文件在请求的 body 中,这样做给了我一个 200 响应和 body :
<?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 上找不到它。
有人知道吗?
这是 Solr 5 中的一个错误。Solr JIRA 上有一个解决此问题的公开票证:
我正在使用 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 请求中得到了 headers,它们是:
> 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 请求来包含这些 headers 和一个多部分文件在请求的 body 中,这样做给了我一个 200 响应和 body :
<?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 上找不到它。
有人知道吗?
这是 Solr 5 中的一个错误。Solr JIRA 上有一个解决此问题的公开票证: