2012-03-16 3 views
0

タイトルが示唆するように、または私が読んだすべてのファイルに対してドキュメントオブジェクトを再利用し、それをインデックスに送信しますか?新しいドキュメントを読んでLUCENE.NETでインデックスを作成するたびに、Document()オブジェクトを作成する必要がありますか?

は現在、私は私が読んで、各ファイルに対してこの

// Loop for each file 
     document = new Document(); 
     fileData = // Read file contents 
     document.Add(new Field("text", fileData, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); 
     indexWriter.AddDocument(document);                               
    // end loop 

をしています。これは正しいアプローチですか?

おかげ

+0

なぜ、それは毎回パフォーマンスの問題ですか? –

+0

@PeterLillevold、はい私は新しいファイルを読むたびにドキュメントオブジェクトを作成しています。 –

+0

それを作成するのはパフォーマンスの問題ですか? – sisve

答えて

1

あなたはパフォーマンスの問題が発生する場合を除き、文書を毎回作成することは正しいアプローチです。結局のところ、バルク時間は実際のファイルの読み込みに使用されます。これはいずれかの方法で行う必要があります。新しいDocumentのインスタンス化に数サイクルを節約することは、おそらく大きな影響を及ぼさないでしょう。

このオブジェクトを再利用することにも注意が必要です。 1つのファイルを表すので、別のファイルでそれを再利用すると、ドキュメント間でデータが「漏れる」可能性があります。

+0

うん。おそらく、私が思っただけ.... –