protected void processPayload(Similarity similarity) throws IOException { if (positions.isPayloadAvailable()) { payload = positions.getPayload(payload, 0); payloadScore = function.currentScore( doc, term.field(), spans.start(), spans.end(), payloadsSeen, payloadScore, similarity.scorePayload( doc, term.field(), spans.start(), spans.end(), payload, 0, positions.getPayloadLength())); payloadsSeen++; } else { // zero out the payload? } }
@Override public void load() throws Exception { TermPositions tp = null; byte[] payloadBuffer = new byte[4]; // four bytes for an int try { tp = _reader.termPositions(_sizeTerm); if (tp == null) return; while (tp.next()) { if (tp.freq() > 0) { tp.nextPosition(); tp.getPayload(payloadBuffer, 0); int len = bytesToInt(payloadBuffer); allocate(tp.doc(), Math.min(len, _maxItems), true); } } } finally { if (tp != null) tp.close(); } }
ReaderData(IndexReader reader) throws IOException { this.reader = reader; long minUID = Long.MAX_VALUE; long maxUID = Long.MIN_VALUE; uidMap = new Long2IntRBTreeMap(); uidMap.defaultReturnValue(-1); int maxDoc = reader.maxDoc(); if (maxDoc == 0) { _minUID = Long.MIN_VALUE; _maxUID = Long.MIN_VALUE; return; } TermPositions tp = null; byte[] payloadBuffer = new byte[8]; // four bytes for a long try { tp = reader.termPositions(ZoieSegmentReader.UID_TERM); while (tp.next()) { int doc = tp.doc(); assert doc < maxDoc; tp.nextPosition(); tp.getPayload(payloadBuffer, 0); long uid = ZoieSegmentReader.bytesToLong(payloadBuffer); if (uid < minUID) minUID = uid; if (uid > maxUID) maxUID = uid; uidMap.put(uid, doc); } } finally { if (tp != null) { tp.close(); } } _minUID = minUID; _maxUID = maxUID; }