func sendIndexQuery(query url.URL, backend string, indexResults chan ranking.ResultPath, done chan int, rankingopts ranking.RankingOpts) { t0 := time.Now() query.Scheme = "http" query.Host = backend query.Path = "/index" log.Printf("asking %s\n", query.String()) resp, err := http.Get(query.String()) if err != nil { done <- 1 return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { done <- 1 return } var files []string if err := json.Unmarshal(body, &files); err != nil { // TODO: Better error message log.Printf("Invalid result from backend " + backend) done <- 1 return } t1 := time.Now() log.Printf("[%s] %d results in %v\n", backend, len(files), t1.Sub(t0)) var result ranking.ResultPath for _, filename := range files { result.Path = filename result.Rank(&rankingopts) if result.Ranking > -1 { indexResults <- result } } done <- 1 }