github.com/balzaczyy/golucene@v0.0.0-20151210033525-d0be9ee89713/core/codec/blocktree/fieldReader.go (about) 1 package blocktree 2 3 import ( 4 . "github.com/balzaczyy/golucene/core/index/model" 5 "github.com/balzaczyy/golucene/core/store" 6 "github.com/balzaczyy/golucene/core/util/fst" 7 ) 8 9 type FieldReader struct { 10 numTerms int64 11 fieldInfo *FieldInfo 12 sumTotalTermFreq int64 13 sumDocFreq int64 14 docCount int 15 indexStartFP int64 16 rootBlockFP int64 17 rootCode []byte 18 minTerm []byte 19 maxTerm []byte 20 longsSize int 21 parent *BlockTreeTermsReader 22 23 index *fst.FST 24 } 25 26 func newFieldReader(parent *BlockTreeTermsReader, 27 fieldInfo *FieldInfo, numTerms int64, rootCode []byte, 28 sumTotalTermFreq, sumDocFreq int64, docCount int, 29 indexStartFP int64, longsSize int, indexIn store.IndexInput, 30 minTerm, maxTerm []byte) (r FieldReader, err error) { 31 32 // log.Print("Initializing FieldReader...") 33 assert(numTerms > 0) 34 r = FieldReader{ 35 parent: parent, 36 fieldInfo: fieldInfo, 37 numTerms: numTerms, 38 sumTotalTermFreq: sumTotalTermFreq, 39 sumDocFreq: sumDocFreq, 40 docCount: docCount, 41 indexStartFP: indexStartFP, 42 rootCode: rootCode, 43 longsSize: longsSize, 44 minTerm: minTerm, 45 maxTerm: maxTerm, 46 } 47 // log.Printf("BTTR: seg=%v field=%v rootBlockCode=%v divisor=", 48 // parent.segment, fieldInfo.Name, rootCode) 49 50 in := store.NewByteArrayDataInput(rootCode) 51 n, err := in.ReadVLong() 52 if err != nil { 53 return r, err 54 } 55 r.rootBlockFP = int64(uint64(n) >> BTT_OUTPUT_FLAGS_NUM_BITS) 56 57 if indexIn != nil { 58 clone := indexIn.Clone() 59 // log.Printf("start=%v field=%v", indexStartFP, fieldInfo.Name) 60 clone.Seek(indexStartFP) 61 r.index, err = fst.LoadFST(clone, fst.ByteSequenceOutputsSingleton()) 62 } 63 64 return r, err 65 } 66 67 func (r *FieldReader) Iterator(reuse TermsEnum) TermsEnum { 68 return newSegmentTermsEnum(r) 69 } 70 71 func (r *FieldReader) SumTotalTermFreq() int64 { 72 return r.sumTotalTermFreq 73 } 74 75 func (r *FieldReader) SumDocFreq() int64 { 76 return r.sumDocFreq 77 } 78 79 func (r *FieldReader) DocCount() int { 80 return int(r.docCount) 81 }