all repos — searchix @ 6b40e0c0fa90f11be14a93f1d6275779fd645cac

Search engine for NixOS, nix-darwin, home-manager and NUR users

refactor: combine import and web server into one binary

Alan Pearce
commit

6b40e0c0fa90f11be14a93f1d6275779fd645cac

parent

2722f24af87f437ed9fcb8cc743ad1784141fd3a

1 file changed, 23 insertions(+), 17 deletions(-)

changed files
M internal/search/indexer.gointernal/index/indexer.go
@@ -1,4 +1,4 @@
-package search +package index import ( "bytes"
@@ -22,13 +22,13 @@ "github.com/blevesearch/bleve/v2/analysis/tokenizer/letter"
"github.com/blevesearch/bleve/v2/analysis/tokenizer/single" "github.com/blevesearch/bleve/v2/document" "github.com/blevesearch/bleve/v2/mapping" - index "github.com/blevesearch/bleve_index_api" + indexAPI "github.com/blevesearch/bleve_index_api" "github.com/pkg/errors" ) type WriteIndex struct { index bleve.Index - meta *IndexMeta + meta *Meta } func createIndexMapping() (mapping.IndexMapping, error) {
@@ -161,7 +161,7 @@
return nil } -func NewIndexer(dataRoot string, force bool) (*WriteIndex, error) { +func OpenOrCreate(dataRoot string, force bool) (*ReadIndex, *WriteIndex, bool, error) { var err error bleve.SetLog(log.Default())
@@ -170,7 +170,7 @@ metaPath := path.Join(dataRoot, metaBaseName)
exists, err := file.Exists(indexPath) if err != nil { - return nil, errors.WithMessagef( + return nil, nil, exists, errors.WithMessagef( err, "could not check if index exists at path %s", indexPath,
@@ -178,45 +178,51 @@ )
} var idx bleve.Index - var meta *IndexMeta + var meta *Meta if !exists || force { if force { err = deleteIndex(dataRoot) if err != nil { - return nil, err + return nil, nil, exists, err } } idx, err = createIndex(indexPath) if err != nil { - return nil, err + return nil, nil, exists, err } meta, err = createMeta(metaPath) if err != nil { - return nil, err + return nil, nil, exists, err } err = meta.Save() if err != nil { - return nil, err + return nil, nil, exists, err } } else { idx, err = bleve.Open(indexPath) if err != nil { - return nil, errors.WithMessagef(err, "could not open index at path %s", indexPath) + return nil, nil, exists, errors.WithMessagef(err, "could not open index at path %s", indexPath) } meta, err = openMeta(metaPath) if err != nil { - return nil, err + return nil, nil, exists, err } } - return &WriteIndex{ - idx, - meta, - }, nil + return &ReadIndex{ + idx, + meta, + }, + &WriteIndex{ + idx, + meta, + }, + exists, + nil } func (i *WriteIndex) ImportOptions(
@@ -257,7 +263,7 @@ errs <- errors.WithMessage(err, "could not store option in search index")
continue } - field := document.NewTextFieldWithIndexingOptions("_data", nil, data.Bytes(), index.StoreField) + field := document.NewTextFieldWithIndexingOptions("_data", nil, data.Bytes(), indexAPI.StoreField) newDoc := doc.AddField(field) // slog.Debug("adding option to index", "name", opt.Name)