func (r *Lucene41PostingsReader) Init(termsIn store.IndexInput) error { log.Printf("Initializing from: %v", termsIn) // Make sure we are talking to the matching postings writer _, err := codec.CheckHeader(termsIn, LUCENE41_TERMS_CODEC, LUCENE41_VERSION_START, LUCENE41_VERSION_CURRENT) if err != nil { return err } indexBlockSize, err := termsIn.ReadVInt() if err != nil { return err } log.Printf("Index block size: %v", indexBlockSize) if indexBlockSize != LUCENE41_BLOCK_SIZE { panic(fmt.Sprintf("index-time BLOCK_SIZE (%v) != read-time BLOCK_SIZE (%v)", indexBlockSize, LUCENE41_BLOCK_SIZE)) } return nil }
/* Reads but does not decode the byte[] blob holding metadata for the current terms block */ func (r *Lucene41PostingsReader) ReadTermsBlock(termsIn store.IndexInput, fieldInfo FieldInfo, _termState *BlockTermState) (err error) { termState := _termState.Self.(*intBlockTermState) numBytes, err := asInt(termsIn.ReadVInt()) if err != nil { return err } if termState.bytes == nil { // TODO over-allocate termState.bytes = make([]byte, numBytes) termState.bytesReader = store.NewEmptyByteArrayDataInput() } else if len(termState.bytes) < numBytes { // TODO over-allocate termState.bytes = make([]byte, numBytes) } err = termsIn.ReadBytes(termState.bytes) if err != nil { return err } termState.bytesReader.Reset(termState.bytes) return nil }
/* Lucene42DocValuesProducer.java Line 126 */ func (dvp *Lucene42DocValuesProducer) readFields(meta store.IndexInput, infos FieldInfos) (err error) { fieldNumber, err := meta.ReadVInt() for fieldNumber != -1 && err == nil { fieldType, err := meta.ReadByte() if err != nil { break } switch fieldType { case LUCENE42_DV_NUMBER: entry := NumericEntry{} entry.offset, err = meta.ReadLong() if err != nil { return err } entry.format, err = meta.ReadByte() if err != nil { return err } switch entry.format { case LUCENE42_DV_DELTA_COMPRESSED: case LUCENE42_DV_TABLE_COMPRESSED: case LUCENE42_DV_GCD_COMPRESSED: case LUCENE42_DV_UNCOMPRESSED: default: return errors.New(fmt.Sprintf("Unknown format: %v, input=%v", entry.format, meta)) } if entry.format != LUCENE42_DV_UNCOMPRESSED { n, err := meta.ReadVInt() if err != nil { return err } entry.packedIntsVersion = int(n) } case LUCENE42_DV_BYTES: panic("not implemented yet") case LUCENE42_DV_FST: panic("not implemented yet") default: return errors.New(fmt.Sprintf("invalid entry type: %v, input=%v", fieldType, meta)) } fieldNumber, err = meta.ReadVInt() } return err }
func newCompressingStoredFieldsIndexReader(fieldsIndexIn store.IndexInput, si SegmentInfo) (r *CompressingStoredFieldsIndexReader, err error) { r = &CompressingStoredFieldsIndexReader{} r.maxDoc = int(si.docCount) r.docBases = make([]int, 0, 16) r.startPointers = make([]int64, 0, 16) r.avgChunkDocs = make([]int, 0, 16) r.avgChunkSizes = make([]int64, 0, 16) r.docBasesDeltas = make([]util.PackedIntsReader, 0, 16) r.startPointersDeltas = make([]util.PackedIntsReader, 0, 16) packedIntsVersion, err := fieldsIndexIn.ReadVInt() if err != nil { return nil, err } for blockCount := 0; ; blockCount++ { numChunks, err := fieldsIndexIn.ReadVInt() if err != nil { return nil, err } if numChunks == 0 { break } { // doc bases n, err := fieldsIndexIn.ReadVInt() if err != nil { return nil, err } r.docBases = append(r.docBases, int(n)) n, err = fieldsIndexIn.ReadVInt() if err != nil { return nil, err } r.avgChunkDocs = append(r.avgChunkDocs, int(n)) bitsPerDocBase, err := fieldsIndexIn.ReadVInt() if err != nil { return nil, err } if bitsPerDocBase > 32 { return nil, errors.New(fmt.Sprintf("Corrupted bitsPerDocBase (resource=%v)", fieldsIndexIn)) } pr, err := util.NewPackedReaderNoHeader(fieldsIndexIn, util.PACKED, packedIntsVersion, numChunks, uint32(bitsPerDocBase)) if err != nil { return nil, err } r.docBasesDeltas = append(r.docBasesDeltas, pr) } { // start pointers n, err := fieldsIndexIn.ReadVLong() if err != nil { return nil, err } r.startPointers = append(r.startPointers, n) n, err = fieldsIndexIn.ReadVLong() if err != nil { return nil, err } r.avgChunkSizes = append(r.avgChunkSizes, n) bitsPerStartPointer, err := fieldsIndexIn.ReadVInt() if err != nil { return nil, err } if bitsPerStartPointer > 64 { return nil, errors.New(fmt.Sprintf("Corrupted bitsPerStartPonter (resource=%v)", fieldsIndexIn)) } pr, err := util.NewPackedReaderNoHeader(fieldsIndexIn, util.PACKED, packedIntsVersion, numChunks, uint32(bitsPerStartPointer)) if err != nil { return nil, err } r.startPointersDeltas = append(r.startPointersDeltas, pr) } } return r, nil }