diff --git a/core/http.go b/core/http.go index 82dd39695..64f42865a 100644 --- a/core/http.go +++ b/core/http.go @@ -279,6 +279,17 @@ func (self *WebService) HandleQuery(w http.ResponseWriter, r *http.Request) { } results, err := self.service.Executor.RunPQL(database_name, pql) + switch r := results.(type) { //a hack to handle empty sets + case []index.Pair: + if len(r) == 0 { + results = []int{} + + } + } + + if results == nil { + log.Println("Empty results") + } if err != nil { http.Error(w, "Error running query: "+err.Error(), http.StatusInternalServerError) } diff --git a/core/query.go b/core/query.go index 79b1bcf51..d5af82c9f 100644 --- a/core/query.go +++ b/core/query.go @@ -34,7 +34,6 @@ func (self *Service) TopNQueryStepHandler(msg *db.Message) { //spew.Dump("TOP-N QUERYSTEP") qs := msg.Data.(query.TopNQueryStep) //spew.Dump(qs) - //TRAVIS SEE HERE //need categories in qs I just added so it would compile var categoryleaves []uint64 input := qs.Input @@ -180,9 +179,9 @@ func (self *Service) CatQueryStepHandler(msg *db.Message) { rank.Pair = &index.Pair{k, v} rank_list = append(rank_list, rank) } - sort.Sort(rank_list) + sort.Sort(rank_list) // kinda seems like this copy is wasteful..i'll ponder items_size := min(len(merge_map), qs.N) - pair_list := make([]index.Pair, 0, len(merge_map)) + pair_list := make([]index.Pair, 0, items_size+1) for i, r := range rank_list { if i < items_size { pair_list = append(pair_list, *r.Pair) diff --git a/index/brand.go b/index/brand.go index 041e5a258..4c9a035ed 100644 --- a/index/brand.go +++ b/index/brand.go @@ -205,7 +205,6 @@ func (self *Brand) TopN(src_bitmap IBitmap, n int, categories []uint64) []Pair { } test := self.TopNCat(src_bitmap, n, is) - log.Println("TOPN:", test, len(self.rankings)) return test } func dump(r RankList, n int) {