Splits bleve.Index and database in two
This commit is contained in:
@@ -3,13 +3,15 @@ package main
|
||||
import (
|
||||
"log"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/blevesearch/bleve"
|
||||
. "gopkg.in/check.v1"
|
||||
)
|
||||
|
||||
type BleveIndexerSuite struct {
|
||||
i Indexer
|
||||
i bleve.Index
|
||||
}
|
||||
|
||||
var _ = Suite(&BleveIndexerSuite{})
|
||||
@@ -17,31 +19,14 @@ var _ = Suite(&BleveIndexerSuite{})
|
||||
func (s *BleveIndexerSuite) SetUpSuite(c *C) {
|
||||
var err error
|
||||
start := time.Now()
|
||||
s.i, err = NewBleveIndexer(filepath.Join(c.MkDir(), "satbd-test.bar.satellite"))
|
||||
s.i, err = bleve.New(filepath.Join(c.MkDir(), "satbd-test.bar.satellite"), buildAlbumMapping())
|
||||
c.Assert(err, IsNil)
|
||||
for _, a := range albumsDataTest {
|
||||
c.Assert(s.i.Index(&a), IsNil)
|
||||
c.Assert(s.i.Index((&a).IDString(), &a), IsNil)
|
||||
}
|
||||
log.Printf("Indexing took %s", time.Since(start))
|
||||
}
|
||||
|
||||
func (s *BleveIndexerSuite) TestCanRetrieveAlbum(c *C) {
|
||||
start := time.Now()
|
||||
for _, a := range albumsDataTest {
|
||||
fromIndex, err := s.i.Get(a.ID)
|
||||
if c.Check(err, IsNil) == true {
|
||||
c.Check(*fromIndex, DeepEquals, a)
|
||||
}
|
||||
}
|
||||
log.Printf("%s: %s", c.TestName(), time.Since(start))
|
||||
}
|
||||
|
||||
func (s *BleveIndexerSuite) TestCanDeleteAlbum(c *C) {
|
||||
c.Check(s.i.Delete(albumsDataTest[0].ID), IsNil)
|
||||
c.Check(s.i.Index(&(albumsDataTest[0])), IsNil)
|
||||
c.Check(s.i.Delete(0), ErrorMatches, "No album 0 in the index")
|
||||
}
|
||||
|
||||
func (s *BleveIndexerSuite) TestCanSearch(c *C) {
|
||||
data := map[string]map[AlbumID]bool{
|
||||
// Research by amny keyword (here in the description
|
||||
@@ -77,17 +62,24 @@ func (s *BleveIndexerSuite) TestCanSearch(c *C) {
|
||||
}
|
||||
start := time.Now()
|
||||
for q, expected := range data {
|
||||
res, err := s.i.Search(q)
|
||||
query := bleve.NewQueryStringQuery(q)
|
||||
search := bleve.NewSearchRequest(query)
|
||||
//make sure we can have all data at once
|
||||
search.Size = len(albumsDataTest)
|
||||
searchResults, err := s.i.Search(search)
|
||||
if c.Check(err, IsNil) == true {
|
||||
if c.Check(len(res), Equals, len(expected), Commentf("Query: %s", q)) == true {
|
||||
for _, resAlbum := range res {
|
||||
_, ok := expected[resAlbum.ID]
|
||||
|
||||
if c.Check(int(searchResults.Total), Equals, len(expected), Commentf("Query: %s", q)) == true {
|
||||
for _, resAlbum := range searchResults.Hits {
|
||||
aID, err := strconv.ParseUint(resAlbum.ID, 0, 64)
|
||||
c.Check(err, IsNil)
|
||||
_, ok := expected[AlbumID(aID)]
|
||||
c.Check(ok, Equals, true, Commentf("Query: %s, got %d instead of %v", q, resAlbum.ID, expected))
|
||||
}
|
||||
} else {
|
||||
log.Printf("Got %d result(s)", len(res))
|
||||
for i, a := range res {
|
||||
log.Printf(" - %d: %d: %s", i, a.ID, a.Title)
|
||||
log.Printf("Got %d result(s)", len(searchResults.Hits))
|
||||
for i, a := range searchResults.Hits {
|
||||
log.Printf(" - %d: %s", i, a.ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user