Example #1
0
func (w *Lucene41PostingsWriter) EncodeTerm(longs []int64,
	out util.DataOutput, fieldInfo *FieldInfo, _state *BlockTermState,
	absolute bool) (err error) {

	assert(longs != nil)
	assert(len(longs) > 0)
	state := _state.Self.(*intBlockTermState)
	if absolute {
		w.lastState = emptyState
	}
	longs[0] = state.docStartFP - w.lastState.docStartFP
	if w.fieldHasPositions {
		longs[1] = state.posStartFP - w.lastState.posStartFP
		if w.fieldHasPayloads || w.fieldHasOffsets {
			longs[2] = state.payStartFP - w.lastState.payStartFP
		}
	}
	if state.singletonDocID != -1 {
		if err = out.WriteVInt(int32(state.singletonDocID)); err != nil {
			return
		}
	}
	if w.fieldHasPositions && state.lastPosBlockOffset != -1 {
		if err = out.WriteVLong(state.lastPosBlockOffset); err != nil {
			return
		}
	}
	if state.skipOffset != -1 {
		if err = out.WriteVLong(state.skipOffset); err != nil {
			return
		}
	}
	w.lastState = state
	return nil
}