code: func (v *view) openFragments() error {
  	file, err := os.Open(filepath.Join(v.path, "fragments"))
  	if os.IsNotExist(err) {
  		return nil
  	} else if err != nil {
  		return errors.Wrap(err, "opening fragments directory")
  	}
  	defer file.Close()
  
  	fis, err := file.Readdir(0)
  	if err != nil {
  		return errors.Wrap(err, "reading fragments directory")
  	}
  
  	for _, fi := range fis {
  		if fi.IsDir() {
  			continue
  		}
  
  		// Parse filename into integer.
  		shard, err := strconv.ParseUint(filepath.Base(fi.Name()), 10, 64)
  		if err != nil {
  			v.logger.Debugf("WARNING: couldn't use non-integer file as shard in index/field/view %s/%s/%s: %s", v.index, v.field, v.name, fi.Name())
  			continue
  		}
  
  		v.logger.Debugf("open index/field/view/fragment: %s/%s/%s/%d", v.index, v.field, v.name, shard)
  		frag := v.newFragment(v.fragmentPath(shard), shard)
  		if err := frag.Open(); err != nil {
  			return fmt.Errorf("open fragment: shard=%d, err=%s", frag.shard, err)
  		}
  		frag.RowAttrStore = v.rowAttrStore
  		v.logger.Debugf("add index/field/view/fragment to view.fragments: %s/%s/%s/%d", v.index, v.field, v.name, shard)
  		v.fragments[frag.shard] = frag
  	}
  
  	return nil
  }
docs: // openFragments opens and initializes the fragments inside the view.