示例#1
0
func ReadDatabase(base string) (*ASCIIDB, error) {
	db := &ASCIIDB{
		basePath:   base,
		Foods:      make(map[string]*Food, 8000),
		searchTree: bst.NewTree(),
	}

	log.Print("Loading food groups")
	if err := db.readFoodGroups(); err != nil {
		return nil, err
	}

	log.Print("Loading nutrient definitions")
	if err := db.readNutrientDefinitions(); err != nil {
		return nil, err
	}

	log.Print("Loading food database")
	if err := db.readFoods(); err != nil {
		return nil, err
	}

	log.Print("Loading food nutrients information")
	if err := db.readFoodNutrients(); err != nil {
		return nil, err
	}

	log.Print("Loading weight information")
	if err := db.readWeights(); err != nil {
		return nil, err
	}

	log.Print("Database loaded")
	log.Printf("... %d foods", len(db.Foods))

	return db, nil
}
示例#2
0
文件: search.go 项目: rsesek/usda-ndb
func (db *ASCIIDB) RebuildSearchIndex() {
	db.searchTree = bst.NewTree()
	for _, food := range db.Foods {
		db.addTermsForFood(food)
	}
}