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

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

Introduction

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

Prototype

public static OrdinalMap build(IndexReader.CacheKey owner, SortedSetDocValues[] values,
        float acceptableOverheadRatio) throws IOException 

Source Link

Document

Create an ordinal map that uses the number of unique values of each SortedSetDocValues instance as a weight.

Usage

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

License:Apache License

/**
 * Build global ordinals for the provided {@link IndexReader}.
 *//*from w  w  w .  java2  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);
}

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

License:Apache License

public static IndexOrdinalsFieldData buildEmpty(Index index, Settings settings, final IndexReader indexReader,
        IndexOrdinalsFieldData indexFieldData) throws IOException {
    assert indexReader.leaves().size() > 1;

    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] = new AbstractAtomicOrdinalsFieldData() {
            @Override//from  w w  w. j  ava  2  s . com
            public RandomAccessOrds getOrdinalsValues() {
                return DocValues.emptySortedSet();
            }

            @Override
            public long ramBytesUsed() {
                return 0;
            }

            @Override
            public Collection<Accountable> getChildResources() {
                return Collections.emptyList();
            }

            @Override
            public void close() {
            }
        };
        subs[i] = atomicFD[i].getOrdinalsValues();
    }
    final OrdinalMap ordinalMap = OrdinalMap.build(null, subs, PackedInts.DEFAULT);
    return new InternalGlobalOrdinalsIndexFieldData(index, settings, indexFieldData.getFieldNames(),
            indexFieldData.getFieldDataType(), atomicFD, ordinalMap, 0);
}