private void WriteFST(FieldInfo field, IEnumerable <BytesRef> values) { meta.WriteVInt(field.Number); meta.WriteByte(MemoryDocValuesProducer.FST); meta.WriteLong(data.FilePointer); PositiveIntOutputs outputs = PositiveIntOutputs.Singleton; var builder = new Builder <long?>(INPUT_TYPE.BYTE1, outputs); var scratch = new IntsRef(); long ord = 0; foreach (BytesRef v in values) { builder.Add(Util.ToIntsRef(v, scratch), ord); ord++; } FST <long?> fst = builder.Finish(); if (fst != null) { fst.Save(data); } meta.WriteVLong(ord); }
internal TermsWriter(FSTOrdTermsWriter outerInstance, FieldInfo fieldInfo) { _outerInstance = outerInstance; _numTerms = 0; _fieldInfo = fieldInfo; _longsSize = outerInstance.postingsWriter.SetField(fieldInfo); _outputs = PositiveIntOutputs.Singleton; _builder = new Builder<long?>(FST.INPUT_TYPE.BYTE1, _outputs); _lastBlockStatsFp = 0; _lastBlockMetaLongsFp = 0; _lastBlockMetaBytesFp = 0; _lastBlockLongs = new long[_longsSize]; _lastLongs = new long[_longsSize]; _lastMetaBytesFp = 0; }