1

私は、Lucene 3.6 を使用したLucene チュートリアルをよく読んでいます。

オブジェクトを作成して検索を実行することはできますが、 のDocument作成に使用した元のオブジェクトを取得したいと考えていますDocument。残念ながら、Lucene は s をシリアライズ/デシリアライズしているように見えるためDocument、それらの間のルックアップ マップを作成できませんでした。

DocumentLucene のと私のの関係を維持するにはどうすればよいObjectですか? これを行うための好ましいLuceneの方法はありますか?

IndexWriter.commit()チュートリアルはそのままでは機能しなかったことに注意してくださいDocument. .IndexWriterConfig.setMaxBufferedDocs()IndexWriterConfig.setRAMBufferSizeMB()

4

1 に答える 1

3

まず、元のオブジェクトへの一意の参照が必要です。オブジェクトがデータベース内の行である場合、主キーを使用することができますID

次に、検索可能な を作成するときに、次Documentのようなフィールドを追加するだけです

doc.add(new Field("id", object.getId().toString(), Field.Store.YES, Field.Index.NOT_ANALYZED));

後で見つかったドキュメントからこのフィールドを取得し、ID に基づいて元のドキュメント (データベース エントリ) を取得できます。

データベース エントリと PDF など、異なるドキュメント タイプがある場合は、同じ方法でドキュメント タイプを保存するだけで、異なるタイプを異なる方法で処理できます。

于 2012-08-09T14:25:17.783 に答える