データ インポート ハンドラー (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 で保存するにはどうすればよいですか? または、これを達成するためのより良い方法はありますか?