Example usage for org.apache.lucene.index OrdinalMap getValueCount

List of usage examples for org.apache.lucene.index OrdinalMap getValueCount

Introduction

In this page you can find the example usage for org.apache.lucene.index OrdinalMap getValueCount.

Prototype

public long getValueCount() 

Source Link

Document

Returns the total number of unique terms in global ord space.

Usage

From source file:org.elasticsearch.index.fielddata.ordinals.GlobalOrdinalsBuilder.java

License:Apache License

/**
 * Build global ordinals for the provided {@link IndexReader}.
 *///  w  ww.j  av  a 2  s  .c o m
public static IndexOrdinalsFieldData build(final IndexReader indexReader, IndexOrdinalsFieldData indexFieldData,
        Settings settings, CircuitBreakerService breakerService, ESLogger logger) throws IOException {
    assert indexReader.leaves().size() > 1;
    long startTimeNS = System.nanoTime();

    final AtomicOrdinalsFieldData[] atomicFD = new AtomicOrdinalsFieldData[indexReader.leaves().size()];
    final RandomAccessOrds[] subs = new RandomAccessOrds[indexReader.leaves().size()];
    for (int i = 0; i < indexReader.leaves().size(); ++i) {
        atomicFD[i] = indexFieldData.load(indexReader.leaves().get(i));
        subs[i] = atomicFD[i].getOrdinalsValues();
    }
    final OrdinalMap ordinalMap = OrdinalMap.build(null, subs, PackedInts.DEFAULT);
    final long memorySizeInBytes = ordinalMap.ramBytesUsed();
    breakerService.getBreaker(CircuitBreaker.FIELDDATA).addWithoutBreaking(memorySizeInBytes);

    if (logger.isDebugEnabled()) {
        logger.debug("Global-ordinals[{}][{}] took {} ms", indexFieldData.getFieldNames().fullName(),
                ordinalMap.getValueCount(), TimeValue.nsecToMSec(System.nanoTime() - startTimeNS));
    }
    return new InternalGlobalOrdinalsIndexFieldData(indexFieldData.index(), settings,
            indexFieldData.getFieldNames(), indexFieldData.getFieldDataType(), atomicFD, ordinalMap,
            memorySizeInBytes);
}