func (np *NormsProducer) readFields(meta store.IndexInput, infos FieldInfos) (err error) { var fieldNumber int32 if fieldNumber, err = meta.ReadVInt(); err != nil { return err } for fieldNumber != -1 { info := infos.FieldInfoByNumber(int(fieldNumber)) if info == nil { return errors.New(fmt.Sprintf("Invalid field number: %v (resource=%v)", fieldNumber, meta)) } else if !info.HasNorms() { return errors.New(fmt.Sprintf("Invalid field: %v (resource=%v)", info.Name, meta)) } var format byte if format, err = meta.ReadByte(); err != nil { return err } var offset int64 if offset, err = meta.ReadLong(); err != nil { return err } entry := &NormsEntry{ format: format, offset: offset, } if format > UNCOMPRESSED { return errors.New(fmt.Sprintf("Unknown format: %v, input=%v", format, meta)) } np.norms[int(fieldNumber)] = entry if fieldNumber, err = meta.ReadVInt(); err != nil { return err } } return nil }
/* Lucene42DocValuesProducer.java/4.5.1/L138 */ func (dvp *Lucene42DocValuesProducer) readFields(meta store.IndexInput) (err error) { var fieldNumber int var fieldType byte fieldNumber, err = asInt(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 { entry.packedIntsVersion, err = asInt(meta.ReadVInt()) if err != nil { return err } } dvp.numerics[fieldNumber] = entry 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 = asInt(meta.ReadVInt()) } return }