Suche: HTMX + Webseite

This commit is contained in:
Simon Martens
2025-02-18 00:33:30 +01:00
parent fd2fa157b2
commit 7aac147686
18 changed files with 348 additions and 69 deletions

View File

@@ -50,7 +50,31 @@ func (sp *SearchProvider) Index(item ISearchable, lib *xmlmodels.Library) error
return err
}
return i.Index(keys[0], item.Readable(lib))
read := item.Readable(lib)
return i.Index(keys[0], read)
}
// TODO: this is sloppy
func (sp *SearchProvider) LoadIndeces() error {
files, err := filepath.Glob(filepath.Join(sp.basepath, "*.bleve"))
if err != nil {
return err
}
if len(files) == 0 {
return errors.New("No indeces found.")
}
for _, file := range files {
index, err := bleve.Open(file)
if err != nil {
return err
}
typ := filepath.Base(file)
typ = typ[:len(typ)-6]
sp.indeces.Store(typ, index)
}
return nil
}
func (sp *SearchProvider) FindCreateIndex(typ string) (bleve.Index, error) {
@@ -77,6 +101,16 @@ func (sp *SearchProvider) FindCreateIndex(typ string) (bleve.Index, error) {
return ind, nil
}
func (sp *SearchProvider) GetIndex(typ string) (bleve.Index, error) {
index, ok := sp.indeces.Load(typ)
if !ok {
return nil, errors.New("Index not found.")
}
i := index.(bleve.Index)
return i, nil
}
func default_mapping() (*mapping.IndexMappingImpl, error) {
indexMapping := bleve.NewIndexMapping()

View File

@@ -8,7 +8,7 @@ type IXMLItem interface {
// - Keys should be unique
// - Keys[0] has the special meaning of the primary key (for FTS etc.)
Keys() []string
Name() string
Type() string
}
type ILibrary interface {

View File

@@ -147,7 +147,7 @@ func (p *XMLProvider[T]) ReverseLookup(item IXMLItem) []Resolved[T] {
keys := item.Keys()
for _, key := range keys {
r, err := p.Resolver.Get(item.Name(), key)
r, err := p.Resolver.Get(item.Type(), key)
if err == nil {
ret = append(ret, r...)
}