Solr - 一个数据导入处理程序记录下的多个附件

时间:2012-10-24 22:44:00

标签: solr solrj apache-tika dataimporthandler

我正在使用数据导入处理程序(DIH)在solr中创建文档。每个文档将包含零个或多个附件。附件(例如PDF,Word文档等)内容被解析(通过Tika)并与附件的路径一起存储。附件的内容(和路径)没有存储在数据库中(我不想这样做)。

我目前有一个包含DIH所需的所有字段的模式。然后我还将attachmentContent和attachmentPath字段添加为multiValued。但是,当我使用Solrj添加文档时,只有一个附件(最后添加的附件)由solr存储和索引。这是代码:

        ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract");
        up.setParam("literal.id", id);

        for (MultipartFile file : files) {
            // skip over files where the client didn't provided a filename
            if (file.getOriginalFilename().equals("")) {
                continue;
            }
            File destFile = new File(destPath, file.getOriginalFilename());
            try {
                file.transferTo(destFile);

                up.setParam("literal.attachmentPath", documentWebPath + acquisition.getId() + "/" + file.getOriginalFilename());
                up.addFile(destFile);   
            } catch (IOException ioe) {
                ioe.printStackTrace();   
            }               
        }
        try {
            up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);            
            solrServer.request(up);
        } catch (SolrServerException sse) {
            sse.printStackTrace();
        }catch (IOException ioe) {
            ioe.printStackTrace();   
        }

如何通过solr存储多个附件(内容和路径)?或者有更好的方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

Solr的局限性是只有一个文档与API索引 如果您希望索引多个文档,可以将它们作为zip文件(并应用patch)并将其编入索引。