Keep on bleving
This commit is contained in:
@@ -76,6 +76,7 @@ func (m *BookmarkManager) ListBookmarks() ([]entity.Bookmark, error) {
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
log.Printf("found %d bookmarks", len(bookmarks))
|
||||
return bookmarks, nil
|
||||
}
|
||||
|
||||
@@ -112,6 +113,13 @@ func (m *BookmarkManager) LoadBookmarkByID(id uint64) entity.Bookmark {
|
||||
|
||||
func (m *BookmarkManager) Search(opts SearchOptions) ([]entity.Bookmark, error) {
|
||||
found := []entity.Bookmark{}
|
||||
log.Printf("search with query: %s", opts.Query)
|
||||
if opts.Sort != "" {
|
||||
panic("unimplemented sort")
|
||||
}
|
||||
if len(opts.Tags) > 0 {
|
||||
panic("unimplemented tags")
|
||||
}
|
||||
|
||||
sr, err := m.db.bleve.Search(bleve.NewSearchRequest(
|
||||
query.NewQueryStringQuery(opts.Query)))
|
||||
@@ -157,7 +165,7 @@ func (m *BookmarkManager) ScrapeAndIndex(bm *entity.Bookmark) error {
|
||||
|
||||
func (m *BookmarkManager) UpdateIndexForBookmark(bm *entity.Bookmark) {
|
||||
log.Printf("inserting into bleve data for %s", bm.URL)
|
||||
err := m.db.bleve.Index(fmt.Sprint(bm.ID), bm.Info)
|
||||
err := m.db.bleve.Index(fmt.Sprint(bm.ID), bm)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
34
db/db.go
34
db/db.go
@@ -5,6 +5,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/blevesearch/bleve/v2"
|
||||
"github.com/blevesearch/bleve/v2/mapping"
|
||||
"github.com/tardisx/linkwallet/entity"
|
||||
bolthold "github.com/timshannon/bolthold"
|
||||
)
|
||||
@@ -26,20 +27,7 @@ func (db *DB) Open(path string) error {
|
||||
|
||||
blevePath := path + ".bleve"
|
||||
|
||||
indexMapping := bleve.NewIndexMapping()
|
||||
pageInfoMapping := bleve.NewDocumentMapping()
|
||||
indexMapping.AddDocumentMapping("pageinfo", pageInfoMapping)
|
||||
|
||||
// entity.PageInfo
|
||||
titleFieldMapping := bleve.NewTextFieldMapping()
|
||||
titleFieldMapping.Analyzer = "en"
|
||||
pageInfoMapping.AddFieldMappingsAt("Title", titleFieldMapping)
|
||||
|
||||
rawTextFieldMapping := bleve.NewTextFieldMapping()
|
||||
rawTextFieldMapping.Analyzer = "en"
|
||||
pageInfoMapping.AddFieldMappingsAt("RawText", rawTextFieldMapping)
|
||||
|
||||
index, err := bleve.New(blevePath, indexMapping)
|
||||
index, err := bleve.New(blevePath, createIndexMapping())
|
||||
|
||||
if err != nil {
|
||||
if err == bleve.ErrorIndexPathExists {
|
||||
@@ -58,6 +46,24 @@ func (db *DB) Open(path string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func createIndexMapping() mapping.IndexMapping {
|
||||
|
||||
indexMapping := bleve.NewIndexMapping()
|
||||
|
||||
pageInfoMapping := bleve.NewDocumentMapping()
|
||||
pageInfoMapping.AddFieldMappingsAt("Title", bleve.NewTextFieldMapping())
|
||||
pageInfoMapping.AddFieldMappingsAt("Size", bleve.NewNumericFieldMapping())
|
||||
pageInfoMapping.AddFieldMappingsAt("RawText", bleve.NewTextFieldMapping())
|
||||
|
||||
bookmarkMapping := bleve.NewDocumentMapping()
|
||||
bookmarkMapping.AddFieldMappingsAt("URL", bleve.NewTextFieldMapping())
|
||||
bookmarkMapping.AddFieldMappingsAt("Tags", bleve.NewTextFieldMapping())
|
||||
bookmarkMapping.AddSubDocumentMapping("Info", pageInfoMapping)
|
||||
|
||||
indexMapping.AddDocumentMapping("bookmark", bookmarkMapping)
|
||||
return indexMapping
|
||||
}
|
||||
|
||||
func (db *DB) Close() {
|
||||
db.store.Close()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user