From 782186213f05af1163f68a3d2d1521fa21329f10 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Tue, 6 Feb 2024 19:05:15 +0100 Subject: [PATCH] WIP --- internal/index/bleve_read.go | 17 +++++++++++------ internal/index/bleve_write.go | 8 ++++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/internal/index/bleve_read.go b/internal/index/bleve_read.go index e610d89..049458f 100644 --- a/internal/index/bleve_read.go +++ b/internal/index/bleve_read.go @@ -51,29 +51,34 @@ func (b *BleveIndexer) Search(keywords string, page, resultsPerPage int) (result return b.runPaginatedQuery(compound, page, resultsPerPage) } -func composeQuery(keywords string, languages []string) *query.DisjunctionQuery { +func composeQuery(keywords string, analyzers []string) *query.DisjunctionQuery { langCompoundQuery := bleve.NewDisjunctionQuery() - for _, lang := range languages { + for _, analyzer := range analyzers { + noStopWordsAnalyzer := analyzer + if analyzer != defaultAnalyzer { + noStopWordsAnalyzer = analyzer + "_no_stop_words" + } + qt := bleve.NewMatchPhraseQuery(keywords) - qt.Analyzer = lang + "_no_stop_words" + qt.Analyzer = noStopWordsAnalyzer qt.SetField("Title") langCompoundQuery.AddQuery(qt) qs := bleve.NewMatchQuery(keywords) - qs.Analyzer = lang + "_no_stop_words" + qs.Analyzer = noStopWordsAnalyzer qs.SetField("Series") qs.Operator = query.MatchQueryOperatorAnd langCompoundQuery.AddQuery(qs) qu := bleve.NewMatchQuery(keywords) - qu.Analyzer = lang + qu.Analyzer = analyzer qu.SetField("Subjects") qu.Operator = query.MatchQueryOperatorAnd langCompoundQuery.AddQuery(qu) qd := bleve.NewMatchQuery(keywords) - qd.Analyzer = lang + qd.Analyzer = analyzer qd.SetField("Description") qd.Operator = query.MatchQueryOperatorAnd langCompoundQuery.AddQuery(qd) diff --git a/internal/index/bleve_write.go b/internal/index/bleve_write.go index 0adbe4a..1169849 100644 --- a/internal/index/bleve_write.go +++ b/internal/index/bleve_write.go @@ -5,6 +5,7 @@ import ( "log" "os" "path/filepath" + "slices" "strings" "github.com/gosimple/slug" @@ -62,7 +63,6 @@ func (b *BleveIndexer) AddLibrary(fs afero.Fs, batchSize int) error { batchSlugs[document.Slug] = struct{}{} languages = addLanguage(meta.Language, languages) - fmt.Printf("File: %s, Slug: %s\n", document.ID, document.Slug) err = batch.Index(document.ID, document) if err != nil { log.Printf("Error indexing file %s: %s\n", fullPath, err) @@ -83,7 +83,11 @@ func (b *BleveIndexer) AddLibrary(fs afero.Fs, batchSize int) error { } func addLanguage(lang string, languages []string) []string { - if _, ok := noStopWordsFilters[lang]; lang != "" && ok { + if !slices.Contains(languages, defaultAnalyzer) && lang == "" { + return append(languages, defaultAnalyzer) + } + + if _, ok := noStopWordsFilters[lang]; ok { found := false for i := range languages { if languages[i] == lang {