Keep on bleving
This commit is contained in:
parent
9b15528510
commit
de90b9951a
@ -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()
|
||||
}
|
||||
|
@ -12,9 +12,7 @@
|
||||
hx-indicator="#htmx-indicator-search" id="manage-search" />
|
||||
</div>
|
||||
</div>
|
||||
{{ template "tags_widget.html" . }}
|
||||
{{ template "manage_results.html" . }}
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
11
web/web.go
11
web/web.go
@ -136,14 +136,15 @@ func Create(bmm *db.BookmarkManager, cmm *db.ConfigManager) *Server {
|
||||
|
||||
r.POST("/manage/results", func(c *gin.Context) {
|
||||
query := c.PostForm("query")
|
||||
tags := []string{}
|
||||
sort := c.Query("sort")
|
||||
|
||||
if c.PostForm("tags_hidden") != "" {
|
||||
tags = strings.Split(c.PostForm("tags_hidden"), "|")
|
||||
bookmarks := []entity.Bookmark{}
|
||||
if query == "" {
|
||||
bookmarks, _ = bmm.ListBookmarks()
|
||||
} else {
|
||||
bookmarks, _ = bmm.Search(db.SearchOptions{Query: query, Sort: sort})
|
||||
}
|
||||
allBookmarks, _ := bmm.Search(db.SearchOptions{Query: query, Tags: tags, Sort: sort})
|
||||
meta := gin.H{"config": config, "bookmarks": allBookmarks}
|
||||
meta := gin.H{"config": config, "bookmarks": bookmarks}
|
||||
|
||||
colTitle := &ColumnInfo{Name: "Title/URL", Param: "title"}
|
||||
colCreated := &ColumnInfo{Name: "Created", Param: "created", Class: "show-for-large"}
|
||||
|
Loading…
x
Reference in New Issue
Block a user