0

データ インポート ハンドラー (DIH) を使用して、solr でドキュメントを作成しています。各ドキュメントには、0 個以上の添付ファイルがあります。添付ファイル (PDF、Word ドキュメントなど) のコンテンツは (Tika を介して) 解析され、添付ファイルへのパスと共に保存されます。添付ファイルのコンテンツ (およびパス) はデータベースに保存されません (私は保存したくありません)。

現在、DIH に必要なすべてのフィールドを含むスキーマがあります。次に、attachmentContent フィールドと attachmentPath フィールドを multiValued として追加しました。ただし、Solrj を使用してドキュメントを追加すると、1 つの添付ファイル (最後に追加されたもの) のみが保存され、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 で保存するにはどうすればよいですか? または、これを達成するためのより良い方法はありますか?

4

1 に答える 1

1

Solr には、API で索引付けされたドキュメントが 1 つしかないという制限があります。
複数のドキュメントをインデックス化する場合は、それらを zip ファイルとしてまとめて (そしてpatchを適用して)、インデックス化することができます。

于 2012-10-25T07:14:01.757 に答える