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 }
func (db *ASCIIDB) RebuildSearchIndex() { db.searchTree = bst.NewTree() for _, food := range db.Foods { db.addTermsForFood(food) } }