/// <summary> /// Encode metadata as <see cref="T:long[]"/> and <see cref="T:byte[]"/>. <paramref name="absolute"/> controls whether /// current term is delta encoded according to latest term. /// Usually elements in <paramref name="longs"/> are file pointers, so each one always /// increases when a new term is consumed. <paramref name="out"/> is used to write generic /// bytes, which are not monotonic. /// <para/> /// NOTE: sometimes <see cref="T:long[]"/> might contain "don't care" values that are unused, e.g. /// the pointer to postings list may not be defined for some terms but is defined /// for others, if it is designed to inline some postings data in term dictionary. /// In this case, the postings writer should always use the last value, so that each /// element in metadata <see cref="T:long[]"/> remains monotonic. /// </summary> public abstract void EncodeTerm(long[] longs, DataOutput @out, FieldInfo fieldInfo, BlockTermState state, bool absolute);
/// <summary> /// Must fully consume state, since after this call that /// <see cref="TermState"/> may be reused. /// </summary> public abstract DocsAndPositionsEnum DocsAndPositions(FieldInfo fieldInfo, BlockTermState state, IBits skipDocs, DocsAndPositionsEnum reuse, DocsAndPositionsFlags flags);
/// <summary> /// Finishes the current term. The provided /// <see cref="BlockTermState"/> contains the term's summary statistics, /// and will holds metadata from PBF when returned. /// </summary> public abstract void FinishTerm(BlockTermState state);
/// <summary> /// Actually decode metadata for next term. </summary> /// <seealso cref="PostingsWriterBase.EncodeTerm(long[], Store.DataOutput, FieldInfo, BlockTermState, bool)"/> public abstract void DecodeTerm(long[] longs, DataInput @in, FieldInfo fieldInfo, BlockTermState state, bool absolute);