私たちのプロジェクトの1つでは、古いLuceneバージョン(2.3.2)を使用しています。現在のLuceneバージョン(3.5.0)を見て、古いコードを書き直そうとしています。古いプロジェクトでは、TopFieldDocCollectorを拡張して、collect()メソッドで追加のフィルタリングを行いました。私は新しいCollectorクラスを理解するのに少し苦労していますが、良い例は見つけられませんでした。Lucene HitCollector(2.x)からCollector(3.x)への移行
1)メソッドsetScorer()。どのように/どこからScorerオブジェクトを取得するのですか?
2)メソッドcollect()。私は自分のコレクションを作成し、興味のあるdocIdsを保存する必要があると思いますが、正しいですか?
3)代わりにTopDocsCollectorを拡張する場合、コンストラクタで使用するPriorityQueueを実装する必要がありますか?そのための標準的な実装はないようです。しかし、私はまだdocIds(またはむしろScoreDocs)を格納するために私自身のコレクションが必要であり、検索が終了した後にpopulateResultsを呼び出しますか?
全体として、TopDocsCollectorを拡張するよりもコレクタを拡張するほうが簡単ですが、何か不足している可能性があります。
ありがとうございます。 setScorer()について知っておきたいことは、APIのドキュメントを理解できず、Scorerを自分で作成してスコアを取得する必要があると考えました。 –