public DocIDMapperSmall(ZoieSegmentReader<?>[] subreaders, int[] starts) { this.subreaders = subreaders; this.starts = starts; mappers = new DocIDMapper[subreaders.length]; for (int i = subreaders.length - 1; i >= 0; --i) { ZoieSegmentReader<?> subReader = subreaders[i]; mappers[i] = subReader.getDocIDMaper(); } bound = subreaders.length - 1; }
@Override public byte[] getStoredValue(long uid) throws IOException { int docid = this.getDocIDMaper().getDocID(uid); if (docid<0) return null; if (docid>=0){ Document doc = document(docid); if (doc!=null){ return doc.getBinaryValue(AbstractZoieIndexable.DOCUMENT_STORE_FIELD); } } return null; }
public DocIDMapper<?> getDocIDMapper(ZoieMultiReader<?> multireader) { final ZoieSegmentReader<?>[] subreaders =(ZoieSegmentReader<?>[])(multireader.getSequentialSubReaders()); final int[] starts = multireader.getStarts(); for (int i = 0; i < subreaders.length; ++i){ ZoieSegmentReader<?> subReader = subreaders[i]; DocIDMapper<?> mapper = subReader.getDocIDMaper(); if (mapper == null){ mapper = new DocIDMapperImpl(subReader.getUIDArray()); } subReader.setDocIDMapper(mapper); } final DocIDMapper[] mappers = new DocIDMapper[subreaders.length]; for(int i=0; i< subreaders.length; i++) { mappers[i] = subreaders[i].getDocIDMaper(); } final int bound = subreaders.length-1; return new DefaultDocIDMapper(bound, mappers, starts); }
@Override public void markDeletes(LongSet delDocs, LongSet deletedUIDs) { DocIDMapper<?> idMapper = getDocIDMaper(); LongIterator iter = delDocs.iterator(); IntRBTreeSet delDocIdSet = _delDocIdSet; while(iter.hasNext()) { long uid = iter.nextLong(); if (ZoieIndexReader.DELETED_UID != uid) { int docid = idMapper.getDocID(uid); if(docid != DocIDMapper.NOT_FOUND) { delDocIdSet.add(docid); deletedUIDs.add(uid); } } } }
DocIDMapper<?> mapper = subReader.getDocIDMaper(); if (mapper == null)