4

アプリケーションに検索を実装するために、Lucene 4.0 API を使用しています。

ナビゲーション フローは次のとおりです。

  1. ユーザーが新しい記事を作成します。Documentを使用してインデックスに新しいが追加されますIndexWriter.addDocument()
  2. 追加後、SearcherManager.maybeRefresh()メソッドが呼び出されます。は、NRL 検索にアクセスするためにSearcherManagerから構築されています。Writer
  3. 作成直後に、ユーザーは自分の記事に新しいタグを追加することにしました。これは Writer.updateDocument()が呼び出されたときです。ステップ 2 で更新を要求したことを考えると、サーチャーが追加されたドキュメントを見つけることが期待できます。しかし、これは見つかりません。

これは一般的な動作ですか?検索者がドキュメントを見つけられるようにする方法はありますか? (コミットを除く)

4

1 に答える 1

1

新しく作成されたドキュメントがメモリに保持されていると思います。I/O 操作には時間とリソースがかかるため、Lucene はすぐには変更を行いません。いくつかのドキュメントをメモリに保持します。バッファがいっぱいになったときにのみ書き込むことをお勧めします。ただし、ドキュメントをすぐに表示して変更したい場合は、まずバッファをフラッシュしてみてください( IndexWriter.flush())。これはディスクに書き込む必要があります。この後にのみ、 (おそらく)リフレッシュしてください。

于 2012-11-08T09:50:50.967 に答える