List of usage examples for org.apache.lucene.index MultiDocValues getSortedValues
public static SortedDocValues getSortedValues(final IndexReader r, final String field) throws IOException
From source file:com.github.flaxsearch.util.ReaderManager.java
License:Apache License
default SortedDocValues getSortedDocValues(Integer segment, String field) throws IOException { if (segment == null) return MultiDocValues.getSortedValues(getIndexReader(), field); return getLeafReader(segment).getSortedDocValues(field); }
From source file:org.apache.solr.index.SlowCompositeReaderWrapper.java
License:Apache License
@Override public SortedDocValues getSortedDocValues(String field) throws IOException { ensureOpen();// w w w. j a v a2 s .c om OrdinalMap map = null; synchronized (cachedOrdMaps) { map = cachedOrdMaps.get(field); if (map == null) { // uncached, or not a multi dv SortedDocValues dv = MultiDocValues.getSortedValues(in, field); if (dv instanceof MultiSortedDocValues) { map = ((MultiSortedDocValues) dv).mapping; if (map.owner == getCoreCacheKey() && merging == false) { cachedOrdMaps.put(field, map); } } return dv; } } int size = in.leaves().size(); final SortedDocValues[] values = new SortedDocValues[size]; final int[] starts = new int[size + 1]; long totalCost = 0; for (int i = 0; i < size; i++) { LeafReaderContext context = in.leaves().get(i); final LeafReader reader = context.reader(); final FieldInfo fieldInfo = reader.getFieldInfos().fieldInfo(field); if (fieldInfo != null && fieldInfo.getDocValuesType() != DocValuesType.SORTED) { return null; } SortedDocValues v = reader.getSortedDocValues(field); if (v == null) { v = DocValues.emptySorted(); } totalCost += v.cost(); values[i] = v; starts[i] = context.docBase; } starts[size] = maxDoc(); return new MultiSortedDocValues(values, starts, map, totalCost); }
From source file:org.apache.tika.eval.tools.SlowCompositeReaderWrapper.java
License:Apache License
@Override public SortedDocValues getSortedDocValues(String field) throws IOException { ensureOpen();/*from w w w . j a va 2s .c om*/ OrdinalMap map = null; synchronized (cachedOrdMaps) { map = cachedOrdMaps.get(field); if (map == null) { // uncached, or not a multi dv SortedDocValues dv = MultiDocValues.getSortedValues(in, field); if (dv instanceof MultiSortedDocValues) { map = ((MultiSortedDocValues) dv).mapping; IndexReader.CacheHelper cacheHelper = getReaderCacheHelper(); if (cacheHelper != null && map.owner == cacheHelper.getKey()) { cachedOrdMaps.put(field, map); } } return dv; } } int size = in.leaves().size(); final SortedDocValues[] values = new SortedDocValues[size]; final int[] starts = new int[size + 1]; long totalCost = 0; for (int i = 0; i < size; i++) { LeafReaderContext context = in.leaves().get(i); final LeafReader reader = context.reader(); final FieldInfo fieldInfo = reader.getFieldInfos().fieldInfo(field); if (fieldInfo != null && fieldInfo.getDocValuesType() != DocValuesType.SORTED) { return null; } SortedDocValues v = reader.getSortedDocValues(field); if (v == null) { v = DocValues.emptySorted(); } totalCost += v.cost(); values[i] = v; starts[i] = context.docBase; } starts[size] = maxDoc(); return new MultiSortedDocValues(values, starts, map, totalCost); }
From source file:perf.PrintPerFieldHeapUsage.java
License:Apache License
public static void main(String[] args) throws IOException { Directory dir = FSDirectory.open(Paths.get("fields")); int fieldUpto; IndexWriterConfig iwc;/* w w w . j a v a 2 s . c o m*/ IndexWriter w; long t0; IndexReader r; // Stored field: iwc = new IndexWriterConfig(new WhitespaceAnalyzer()); iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE); w = new IndexWriter(dir, iwc); fieldUpto = 0; t0 = System.nanoTime(); for (int i = 0; i < FIELD_COUNT; i++) { Document doc = new Document(); doc.add(new StoredField("f" + fieldUpto, "text" + i)); fieldUpto++; w.addDocument(doc); } w.forceMerge(1); w.close(); r = DirectoryReader.open(dir); System.out.println(String.format(Locale.ROOT, "Took %.1f sec; bytes per unique StoredField: %.1f", (System.nanoTime() - t0) / 1000000000.0, (RamUsageTester.sizeOf(r) / (double) FIELD_COUNT))); r.close(); // Indexed StringField: iwc = new IndexWriterConfig(new WhitespaceAnalyzer()); iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE); w = new IndexWriter(dir, iwc); fieldUpto = 0; t0 = System.nanoTime(); for (int i = 0; i < FIELD_COUNT; i++) { Document doc = new Document(); doc.add(new StringField("f" + fieldUpto, "text" + i, Field.Store.NO)); fieldUpto++; w.addDocument(doc); } w.forceMerge(1); w.close(); r = DirectoryReader.open(dir); System.out.println(String.format(Locale.ROOT, "Took %.1f sec; bytes per unique StringField: %.1f", (System.nanoTime() - t0) / 1000000000.0, (RamUsageTester.sizeOf(r) / (double) FIELD_COUNT))); r.close(); // Numeric DV field: iwc = new IndexWriterConfig(new WhitespaceAnalyzer()); iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE); w = new IndexWriter(dir, iwc); fieldUpto = 0; t0 = System.nanoTime(); for (int i = 0; i < FIELD_COUNT; i++) { Document doc = new Document(); doc.add(new NumericDocValuesField("f" + fieldUpto, i)); fieldUpto++; w.addDocument(doc); } w.forceMerge(1); w.close(); r = DirectoryReader.open(dir); System.out.println(String.format(Locale.ROOT, "Took %.1f sec; bytes per unique NumericDocValuesField, latent: %.1f", (System.nanoTime() - t0) / 1000000000.0, (RamUsageTester.sizeOf(r) / (double) FIELD_COUNT))); // Now force lazy loading of all the DV fields: for (int i = 0; i < FIELD_COUNT; i++) { MultiDocValues.getNumericValues(r, "f" + i); } System.out.println(String.format(Locale.ROOT, "Bytes per unique NumericDocValuesField, loaded: %.1f", (RamUsageTester.sizeOf(r) / (double) FIELD_COUNT))); r.close(); // Sorted DV field: iwc = new IndexWriterConfig(new WhitespaceAnalyzer()); iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE); w = new IndexWriter(dir, iwc); fieldUpto = 0; t0 = System.nanoTime(); for (int i = 0; i < FIELD_COUNT; i++) { Document doc = new Document(); doc.add(new SortedDocValuesField("f" + fieldUpto, new BytesRef("text" + i))); fieldUpto++; w.addDocument(doc); } w.forceMerge(1); w.close(); r = DirectoryReader.open(dir); System.out.println(String.format(Locale.ROOT, "Took %.1f sec; bytes per unique SortedDocValuesField, latent: %.1f", (System.nanoTime() - t0) / 1000000000.0, (RamUsageTester.sizeOf(r) / (double) FIELD_COUNT))); // Now force lazy loading of all the DV fields: for (int i = 0; i < FIELD_COUNT; i++) { MultiDocValues.getSortedValues(r, "f" + i); } System.out.println(String.format(Locale.ROOT, "Bytes per unique SortedDocValuesField, loaded: %.1f", (RamUsageTester.sizeOf(r) / (double) FIELD_COUNT))); r.close(); dir.close(); }