Reports all results

This commit is contained in:
2016-01-21 18:54:24 +01:00
parent 0d3e8b922a
commit 2516bcb128

View File

@@ -15,6 +15,8 @@ import (
"github.com/peterbourgon/diskv" "github.com/peterbourgon/diskv"
) )
type SearchResult bleve.SearchResult
type Indexer interface { type Indexer interface {
Index(a *Album) error Index(a *Album) error
Get(ID AlbumID) (*Album, error) Get(ID AlbumID) (*Album, error)
@@ -173,19 +175,28 @@ func (i *bleveIndexer) Search(query string) ([]*Album, error) {
blq := bleve.NewQueryStringQuery(query) blq := bleve.NewQueryStringQuery(query)
search := bleve.NewSearchRequest(blq) search := bleve.NewSearchRequest(blq)
search.Highlight = bleve.NewHighlight() search.Highlight = bleve.NewHighlight()
searchResults, err := i.bl.Search(search) sRes, err := i.bl.Search(search)
if err != nil { if err != nil {
return nil, fmt.Errorf("Could not perform search on the index: %s", err) return nil, fmt.Errorf("Could not perform search on the index: %s", err)
} }
res := make([]*Album, 0, searchResults.Total) res := make([]*Album, 0, sRes.Total)
for _, d := range searchResults.Hits { for len(res) < int(sRes.Total) {
a, err := i.get(d.ID) if len(res) != 0 {
if err != nil { //fetches the next results
return res, err search.From = len(res)
sRes, err = i.bl.Search(search)
if err != nil {
return nil, fmt.Errorf("Could not perform search on the index: %s", err)
}
}
for _, d := range sRes.Hits {
a, err := i.get(d.ID)
if err != nil {
return nil, err
}
res = append(res, a)
} }
res = append(res, a)
} }
return res, nil return res, nil