文書が大きすぎない場合は、まずメモリに読み込んでから、新しいフィールドを追加するときに結果の値を文字列として指定してください。ドキュメントが大きい場合は、それらを管理可能なチャンクに分割し、各チャンクで上記の操作を実行します。 Luceneがすべての値を検索するように、各チャンクに同じフィールド名を使用するようにしてください。
例:
IndexWriter writer = ...
String id = ...
String[] lines = ...
Document doc = new Document();
doc.add(new Field("id", id, Store.YES, Index.NOT_ANALYZED, TermVector.NO);
for (String line: lines) {
doc.add(new Field("text", line, Store.YES, Index.ANALYZED, TermVector.WITH_POSITIONS);
}
writer.addDocument(doc);
のLuceneは自動的にプールされたセットの上に検索できるように、それぞれに指定された値は、同じフィールド名を追加マージします。
しかし、キャッシュされたコピーを表示したいときや強調表示したいときに問題になることはありませんか?あなたは同じフィールド名を維持すると言うとき、それはどういう意味ですか?同じ "名前"を持つ複数のフィールドを作成し、ドキュメントに追加しますか? – Sap
@sapan上記の答えにサンプルコードを追加しました。 –
ありがとう、それは働いているようです。 – Sap