org.apache.lucene.search

## Class FieldValueHitQueue<T extends FieldValueHitQueue.Entry>

- java.lang.Object
- - org.apache.lucene.util.PriorityQueue<T>
  - - org.apache.lucene.search.FieldValueHitQueue<T>

    public abstract class FieldValueHitQueue<T extends FieldValueHitQueue.Entry>
    extends PriorityQueue<T>

Expert: A hit queue for sorting by hits by terms in more than one field. Uses `FieldCache.DEFAULT` for maintaining internal term lookup tables.

Since:
  2.9
See Also:
  `IndexSearcher.search(Query,Filter,int,Sort)`, `FieldCache`
WARNING: This API is experimental and might change in incompatible ways in the next release.

### Nested Class Summary

Nested Classes
`static class` `FieldValueHitQueue.Entry` Extension of ScoreDoc to also store the `FieldComparator` slot.

### Field Summary

Fields
`protected FieldComparator<?>[]` `comparators`
`protected SortField[]` `fields` Stores the sort criteria being used.
`protected FieldComparator<?>` `firstComparator`
`protected int[]` `reverseMul`

### Method Summary

Methods
`static <T extends FieldValueHitQueue.Entry> FieldValueHitQueue<T>` `create(SortField[] fields, int size)` Creates a hit queue sorted by the given list of fields.
`FieldComparator<?>[]` `getComparators()`
`int[]` `getReverseMul()`
`protected abstract boolean` `lessThan(FieldValueHitQueue.Entry a, FieldValueHitQueue.Entry b)` Determines the ordering of objects in this priority queue.
`void` `setComparator(int pos, FieldComparator<?> comparator)`

### Methods inherited from class org.apache.lucene.util.PriorityQueue

`add, clear, getHeapArray, getSentinelObject, insertWithOverflow, pop, size, top, updateTop`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### fields

    protected final SortField[] fields

Stores the sort criteria being used.

#### comparators

    protected final FieldComparator<?>[] comparators

#### firstComparator

    protected FieldComparator<?> firstComparator

#### reverseMul

    protected final int[] reverseMul

### Method Detail

#### create

    public static <T extends FieldValueHitQueue.Entry> FieldValueHitQueue<T> create(SortField[] fields,
                                                                    int size)
                                                                         throws IOException

Creates a hit queue sorted by the given list of fields.

NOTE: The instances returned by this method pre-allocate a full array of length `numHits`.

Parameters:
  `fields` - SortField array we are sorting by in priority order (highest priority first); cannot be `null` or empty
  `size` - The number of hits to retain. Must be greater than zero.
Throws:
  `IOException` - if there is a low-level IO error

#### getComparators

    public FieldComparator<?>[] getComparators()

#### getReverseMul

    public int[] getReverseMul()

#### setComparator

    public void setComparator(int pos,
                     FieldComparator<?> comparator)

#### lessThan

    protected abstract boolean lessThan(FieldValueHitQueue.Entry a,
                   FieldValueHitQueue.Entry b)

Description copied from class: `PriorityQueue`
Determines the ordering of objects in this priority queue. Subclasses must define this one method.

Specified by:
  `lessThan` in class `PriorityQueue<T extends FieldValueHitQueue.Entry>`
Returns:
  `true` iff parameter `a` is less than parameter `b`.