com.browseengine.bobo.sort.MultiDocIdComparator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bobo-browse Show documentation
Show all versions of bobo-browse Show documentation
Bobo is a Faceted Search implementation written purely in Java, an extension of Apache Lucene
The newest version!
package com.browseengine.bobo.sort;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Scorer;
public class MultiDocIdComparator extends DocComparator {
private final DocComparator[] _comparators;
public MultiDocIdComparator(DocComparator[] comparators) {
_comparators = comparators;
}
@Override
public int compare(ScoreDoc doc1, ScoreDoc doc2) {
for (int i = 0; i < _comparators.length; ++i) {
int v = _comparators[i].compare(doc1, doc2);
if (v != 0) return v;
}
return 0;
}
@Override
public MultiDocIdComparator setScorer(Scorer scorer) {
for (DocComparator comparator : _comparators) {
comparator.setScorer(scorer);
}
return this;
}
@Override
public Comparable> value(ScoreDoc doc) {
return new MultiDocIdComparable(doc, _comparators);
}
@SuppressWarnings("rawtypes")
public static class MultiDocIdComparable implements Comparable {
private final ScoreDoc _doc;
private final DocComparator[] _comparators;
public MultiDocIdComparable(ScoreDoc doc, DocComparator[] comparators) {
_doc = doc;
_comparators = comparators;
}
@SuppressWarnings("unchecked")
@Override
public int compareTo(Object o) {
MultiDocIdComparable other = (MultiDocIdComparable) o;
Comparable c1, c2;
for (int i = 0; i < _comparators.length; ++i) {
c1 = _comparators[i].value(_doc);
c2 = other._comparators[i].value(other._doc);
int v = c1.compareTo(c2);
if (v != 0) {
return v;
}
}
return 0;
}
}
}