func newFieldReader(owner *BlockTreeTermsReader, fieldInfo FieldInfo, numTerms int64, rootCode []byte, sumTotalTermFreq, sumDocFreq int64, docCount int32, indexStartFP int64, indexIn store.IndexInput) (r FieldReader, err error) { log.Print("Initializing FieldReader...") if numTerms <= 0 { panic("assert fail") } // assert numTerms > 0 r = FieldReader{ BlockTreeTermsReader: owner, fieldInfo: fieldInfo, numTerms: numTerms, sumTotalTermFreq: sumTotalTermFreq, sumDocFreq: sumDocFreq, docCount: docCount, indexStartFP: indexStartFP, rootCode: rootCode, } log.Printf("BTTR: seg=%v field=%v rootBlockCode=%v divisor=", owner.segment, fieldInfo.name, rootCode) in := store.NewByteArrayDataInput(rootCode) n, err := in.ReadVLong() if err != nil { return r, err } r.rootBlockFP = int64(uint64(n) >> BTT_OUTPUT_FLAGS_NUM_BITS) if indexIn != nil { clone := indexIn.Clone() log.Printf("start=%v field=%v", indexStartFP, fieldInfo.name) clone.Seek(indexStartFP) r.index, err = util.LoadFST(clone, util.ByteSequenceOutputsSingleton()) } return r, err }