private FieldValueHitQueue(SortField[] fields, int size) { super(size); // When we get here, fields.length is guaranteed to be > 0, therefore no // need to check it again. // All these are required by this class's API - need to return arrays. // Therefore even in the case of a single comparator, create an array // anyway. this.fields = fields; int numComparators = fields.length; comparators = new FieldComparator<?>[numComparators]; reverseMul = new int[numComparators]; for (int i = 0; i < numComparators; ++i) { SortField field = fields[i]; reverseMul[i] = field.reverse ? -1 : 1; comparators[i] = field.getComparator(size, i); } }
public MergeSortQueue(Sort sort, TopDocs[] shardHits) { super(shardHits.length); this.shardHits = new ScoreDoc[shardHits.length][]; for(int shardIDX=0;shardIDX<shardHits.length;shardIDX++) { final ScoreDoc[] shard = shardHits[shardIDX].scoreDocs; //System.out.println(" init shardIdx=" + shardIDX + " hits=" + shard); if (shard != null) { this.shardHits[shardIDX] = shard; // Fail gracefully if API is misused: for(int hitIDX=0;hitIDX<shard.length;hitIDX++) { final ScoreDoc sd = shard[hitIDX]; if (!(sd instanceof FieldDoc)) { throw new IllegalArgumentException("shard " + shardIDX + " was not sorted by the provided Sort (expected FieldDoc but got ScoreDoc)"); } final FieldDoc fd = (FieldDoc) sd; if (fd.fields == null) { throw new IllegalArgumentException("shard " + shardIDX + " did not set sort field values (FieldDoc.fields is null); you must pass fillFields=true to IndexSearcher.search on each shard"); } } } } final SortField[] sortFields = sort.getSort(); comparators = new FieldComparator[sortFields.length]; reverseMul = new int[sortFields.length]; for(int compIDX=0;compIDX<sortFields.length;compIDX++) { final SortField sortField = sortFields[compIDX]; comparators[compIDX] = sortField.getComparator(1, compIDX); reverseMul[compIDX] = sortField.getReverse() ? -1 : 1; } }
comparators[i] = fields[i].getComparator(1, i).getLeafComparator(readerContext);
MergeSortQueue(Sort sort, CollapseTopFieldDocs[] shardHits) { super(shardHits.length); this.shardHits = new ScoreDoc[shardHits.length][]; for (int shardIDX = 0; shardIDX < shardHits.length; shardIDX++) { final ScoreDoc[] shard = shardHits[shardIDX].scoreDocs; if (shard != null) { this.shardHits[shardIDX] = shard; // Fail gracefully if API is misused: for (int hitIDX = 0; hitIDX < shard.length; hitIDX++) { final ScoreDoc sd = shard[hitIDX]; final FieldDoc gd = (FieldDoc) sd; assert gd.fields != null; } } } final SortField[] sortFields = sort.getSort(); comparators = new FieldComparator[sortFields.length]; reverseMul = new int[sortFields.length]; for (int compIDX = 0; compIDX < sortFields.length; compIDX++) { final SortField sortField = sortFields[compIDX]; comparators[compIDX] = sortField.getComparator(1, compIDX); reverseMul[compIDX] = sortField.getReverse() ? -1 : 1; } }
public SearchAfterSortedDocQuery(Sort sort, FieldDoc after) { if (sort.getSort().length != after.fields.length) { throw new IllegalArgumentException("after doc has " + after.fields.length + " value(s) but sort has " + sort.getSort().length + "."); } this.sort = sort; this.after = after; int numFields = sort.getSort().length; this.fieldComparators = new FieldComparator[numFields]; this.reverseMuls = new int[numFields]; for (int i = 0; i < numFields; i++) { SortField sortField = sort.getSort()[i]; FieldComparator<?> fieldComparator = sortField.getComparator(1, i); @SuppressWarnings("unchecked") FieldComparator<Object> comparator = (FieldComparator<Object>) fieldComparator; comparator.setTopValue(after.fields[i]); fieldComparators[i] = fieldComparator; reverseMuls[i] = sortField.getReverse() ? -1 : 1; } }
private FieldValueHitQueue(SortField[] fields, int size) { super(size); // When we get here, fields.length is guaranteed to be > 0, therefore no // need to check it again. // All these are required by this class's API - need to return arrays. // Therefore even in the case of a single comparator, create an array // anyway. this.fields = fields; int numComparators = fields.length; comparators = new FieldComparator<?>[numComparators]; reverseMul = new int[numComparators]; for (int i = 0; i < numComparators; ++i) { SortField field = fields[i]; reverseMul[i] = field.reverse ? -1 : 1; comparators[i] = field.getComparator(size, i); } }
private FieldValueHitQueue(SortField[] fields, int size) throws IOException { super(size); // When we get here, fields.length is guaranteed to be > 0, therefore no // need to check it again. // All these are required by this class's API - need to return arrays. // Therefore even in the case of a single comparator, create an array // anyway. this.fields = fields; int numComparators = fields.length; comparators = new FieldComparator<?>[numComparators]; reverseMul = new int[numComparators]; for (int i = 0; i < numComparators; ++i) { SortField field = fields[i]; reverseMul[i] = field.reverse ? -1 : 1; comparators[i] = field.getComparator(size, i); } }
private FieldValueHitQueue(SortField[] fields, int size) throws IOException { super(size); // When we get here, fields.length is guaranteed to be > 0, therefore no // need to check it again. // All these are required by this class's API - need to return arrays. // Therefore even in the case of a single comparator, create an array // anyway. this.fields = fields; int numComparators = fields.length; comparators = new FieldComparator<?>[numComparators]; reverseMul = new int[numComparators]; for (int i = 0; i < numComparators; ++i) { SortField field = fields[i]; reverseMul[i] = field.reverse ? -1 : 1; comparators[i] = field.getComparator(size, i); } }
@SuppressWarnings({"unchecked", "rawtypes"}) public GroupComparator(Sort groupSort) { final SortField[] sortFields = groupSort.getSort(); comparators = new FieldComparator[sortFields.length]; reversed = new int[sortFields.length]; for (int compIDX = 0; compIDX < sortFields.length; compIDX++) { final SortField sortField = sortFields[compIDX]; comparators[compIDX] = sortField.getComparator(1, compIDX); reversed[compIDX] = sortField.getReverse() ? -1 : 1; } }
@SuppressWarnings({"unchecked", "rawtypes"}) public GroupComparator(Sort groupSort) throws IOException { final SortField[] sortFields = groupSort.getSort(); comparators = new FieldComparator[sortFields.length]; reversed = new int[sortFields.length]; for (int compIDX = 0; compIDX < sortFields.length; compIDX++) { final SortField sortField = sortFields[compIDX]; comparators[compIDX] = sortField.getComparator(1, compIDX); reversed[compIDX] = sortField.getReverse() ? -1 : 1; } }
public MergeSortQueue(Sort sort, TopDocs[] shardHits) throws IOException { super(shardHits.length); this.shardHits = new ScoreDoc[shardHits.length][]; for(int shardIDX=0;shardIDX<shardHits.length;shardIDX++) { final ScoreDoc[] shard = shardHits[shardIDX].scoreDocs; //System.out.println(" init shardIdx=" + shardIDX + " hits=" + shard); if (shard != null) { this.shardHits[shardIDX] = shard; // Fail gracefully if API is misused: for(int hitIDX=0;hitIDX<shard.length;hitIDX++) { final ScoreDoc sd = shard[hitIDX]; if (!(sd instanceof FieldDoc)) { throw new IllegalArgumentException("shard " + shardIDX + " was not sorted by the provided Sort (expected FieldDoc but got ScoreDoc)"); } final FieldDoc fd = (FieldDoc) sd; if (fd.fields == null) { throw new IllegalArgumentException("shard " + shardIDX + " did not set sort field values (FieldDoc.fields is null); you must pass fillFields=true to IndexSearcher.search on each shard"); } } } } final SortField[] sortFields = sort.getSort(); comparators = new FieldComparator[sortFields.length]; reverseMul = new int[sortFields.length]; for(int compIDX=0;compIDX<sortFields.length;compIDX++) { final SortField sortField = sortFields[compIDX]; comparators[compIDX] = sortField.getComparator(1, compIDX); reverseMul[compIDX] = sortField.getReverse() ? -1 : 1; } }
MergeSortQueue(Sort sort, CollapseTopFieldDocs[] shardHits) { super(shardHits.length); this.shardHits = new ScoreDoc[shardHits.length][]; for (int shardIDX = 0; shardIDX < shardHits.length; shardIDX++) { final ScoreDoc[] shard = shardHits[shardIDX].scoreDocs; if (shard != null) { this.shardHits[shardIDX] = shard; // Fail gracefully if API is misused: for (int hitIDX = 0; hitIDX < shard.length; hitIDX++) { final ScoreDoc sd = shard[hitIDX]; final FieldDoc gd = (FieldDoc) sd; assert gd.fields != null; } } } final SortField[] sortFields = sort.getSort(); comparators = new FieldComparator[sortFields.length]; reverseMul = new int[sortFields.length]; for (int compIDX = 0; compIDX < sortFields.length; compIDX++) { final SortField sortField = sortFields[compIDX]; comparators[compIDX] = sortField.getComparator(1, compIDX); reverseMul[compIDX] = sortField.getReverse() ? -1 : 1; } }
MergeSortQueue(Sort sort, CollapseTopFieldDocs[] shardHits) { super(shardHits.length); this.shardHits = new ScoreDoc[shardHits.length][]; for (int shardIDX = 0; shardIDX < shardHits.length; shardIDX++) { final ScoreDoc[] shard = shardHits[shardIDX].scoreDocs; if (shard != null) { this.shardHits[shardIDX] = shard; // Fail gracefully if API is misused: for (int hitIDX = 0; hitIDX < shard.length; hitIDX++) { final ScoreDoc sd = shard[hitIDX]; final FieldDoc gd = (FieldDoc) sd; assert gd.fields != null; } } } final SortField[] sortFields = sort.getSort(); comparators = new FieldComparator[sortFields.length]; reverseMul = new int[sortFields.length]; for (int compIDX = 0; compIDX < sortFields.length; compIDX++) { final SortField sortField = sortFields[compIDX]; comparators[compIDX] = sortField.getComparator(1, compIDX); reverseMul[compIDX] = sortField.getReverse() ? -1 : 1; } }
MergeSortQueue(Sort sort, CollapseTopFieldDocs[] shardHits) { super(shardHits.length); this.shardHits = new ScoreDoc[shardHits.length][]; for (int shardIDX = 0; shardIDX < shardHits.length; shardIDX++) { final ScoreDoc[] shard = shardHits[shardIDX].scoreDocs; if (shard != null) { this.shardHits[shardIDX] = shard; // Fail gracefully if API is misused: for (int hitIDX = 0; hitIDX < shard.length; hitIDX++) { final ScoreDoc sd = shard[hitIDX]; final FieldDoc gd = (FieldDoc) sd; assert gd.fields != null; } } } final SortField[] sortFields = sort.getSort(); comparators = new FieldComparator[sortFields.length]; reverseMul = new int[sortFields.length]; for (int compIDX = 0; compIDX < sortFields.length; compIDX++) { final SortField sortField = sortFields[compIDX]; comparators[compIDX] = sortField.getComparator(1, compIDX); reverseMul[compIDX] = sortField.getReverse() ? -1 : 1; } }
protected SortingGroupHead(Sort sort, T groupValue, int doc, LeafReaderContext context, Scorer scorer) throws IOException { super(groupValue, doc, context.docBase); final SortField[] sortFields = sort.getSort(); comparators = new FieldComparator[sortFields.length]; leafComparators = new LeafFieldComparator[sortFields.length]; for (int i = 0; i < sortFields.length; i++) { comparators[i] = sortFields[i].getComparator(1, i); leafComparators[i] = comparators[i].getLeafComparator(context); leafComparators[i].setScorer(scorer); leafComparators[i].copy(0, doc); leafComparators[i].setBottom(0); } }
@SuppressWarnings({"unchecked","rawtypes"}) private GroupHead(MutableValue groupValue, Sort sort, int doc) throws IOException { super(groupValue, doc + readerContext.docBase); final SortField[] sortFields = sort.getSort(); comparators = new FieldComparator[sortFields.length]; leafComparators = new LeafFieldComparator[sortFields.length]; for (int i = 0; i < sortFields.length; i++) { comparators[i] = sortFields[i].getComparator(1, i); leafComparators[i] = comparators[i].getLeafComparator(readerContext); leafComparators[i].setScorer(scorer); leafComparators[i].copy(0, doc); leafComparators[i].setBottom(0); } }
public SearchAfterSortedDocQuery(Sort sort, FieldDoc after) { if (sort.getSort().length != after.fields.length) { throw new IllegalArgumentException("after doc has " + after.fields.length + " value(s) but sort has " + sort.getSort().length + "."); } this.sort = sort; this.after = after; int numFields = sort.getSort().length; this.fieldComparators = new FieldComparator[numFields]; this.reverseMuls = new int[numFields]; for (int i = 0; i < numFields; i++) { SortField sortField = sort.getSort()[i]; FieldComparator<?> fieldComparator = sortField.getComparator(1, i); @SuppressWarnings("unchecked") FieldComparator<Object> comparator = (FieldComparator<Object>) fieldComparator; comparator.setTopValue(after.fields[i]); fieldComparators[i] = fieldComparator; reverseMuls[i] = sortField.getReverse() ? -1 : 1; } }
@SuppressWarnings({"unchecked", "rawtypes"}) GroupHead(BytesRef groupValue, Sort sort, int doc) throws IOException { super(groupValue, doc + readerContext.docBase); final SortField[] sortFields = sort.getSort(); comparators = new FieldComparator[sortFields.length]; leafComparators = new LeafFieldComparator[sortFields.length]; for (int i = 0; i < sortFields.length; i++) { comparators[i] = sortFields[i].getComparator(1, i); leafComparators[i] = comparators[i].getLeafComparator(readerContext); leafComparators[i].setScorer(scorer); leafComparators[i].copy(0, doc); leafComparators[i].setBottom(0); } }
public SearchAfterSortedDocQuery(Sort sort, FieldDoc after) { if (sort.getSort().length != after.fields.length) { throw new IllegalArgumentException("after doc has " + after.fields.length + " value(s) but sort has " + sort.getSort().length + "."); } this.sort = sort; this.after = after; int numFields = sort.getSort().length; this.fieldComparators = new FieldComparator[numFields]; this.reverseMuls = new int[numFields]; for (int i = 0; i < numFields; i++) { SortField sortField = sort.getSort()[i]; FieldComparator<?> fieldComparator = sortField.getComparator(1, i); @SuppressWarnings("unchecked") FieldComparator<Object> comparator = (FieldComparator<Object>) fieldComparator; comparator.setTopValue(after.fields[i]); fieldComparators[i] = fieldComparator; reverseMuls[i] = sortField.getReverse() ? -1 : 1; } }
private void initializeFieldComparators(Sort sort, int numberOfHits, IndexReader indexReader, float[] scores) { try { scorer = new PredefinedScorer(scores == null ? new float[0] : scores); if (sort.getSort().length == 1 && scores != null) { fieldComparators[0] = new FloatValueFieldComparator(scores); descending[0] = sort.getSort()[0].getReverse(); return; } for (int i = 0; i < sort.getSort().length; i++) { SortField sortField = sort.getSort()[i]; fieldComparators[i] = sortField.getComparator(numberOfHits, i); descending[i] = sortField.getReverse(); fieldComparators[i].setNextReader(indexReader, 0); fieldComparators[i].setScorer(scorer); } } catch (IOException e) { throw new RuntimeException(e); } }