package com.browseengine.bobo.sort;
import java.io.IOException;
import org.apache.lucene.index.AtomicReader;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Scorer;
public class LuceneCustomDocComparatorSource extends DocComparatorSource {
private final FieldComparator<Comparable<?>> _luceneComparator;
public LuceneCustomDocComparatorSource(String fieldname,
FieldComparator<Comparable<?>> luceneComparator) {
_luceneComparator = luceneComparator;
}
@Override
public DocComparator getComparator(AtomicReader reader, int docbase) throws IOException {
_luceneComparator.setNextReader(reader.getContext());
return new DocComparator() {
@Override
public Comparable<?> value(ScoreDoc doc) {
return _luceneComparator.value(doc.doc);
}
@Override
public int compare(ScoreDoc doc1, ScoreDoc doc2) {
return _luceneComparator.compare(doc1.doc, doc2.doc);
}
@Override
public DocComparator setScorer(Scorer scorer) {
_luceneComparator.setScorer(scorer);
return this;
}
};
}
}