about summary refs log tree commit diff stats
path: root/internal/index/search.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/index/search.go')
-rw-r--r--internal/index/search.go27
1 files changed, 23 insertions, 4 deletions
diff --git a/internal/index/search.go b/internal/index/search.go
index 292661e..a8124c7 100644
--- a/internal/index/search.go
+++ b/internal/index/search.go
@@ -128,8 +128,8 @@ func (index *ReadIndex) Search(
 
 	// match the user's query in any field ...
 	query.AddMust(bleve.NewDisjunctionQuery(
-		bleve.NewTermQuery(keyword),
-		bleve.NewPrefixQuery(keyword),
+		setBoost(bleve.NewTermQuery(keyword), 50),
+		setBoost(bleve.NewPrefixQuery(keyword), 25),
 		bleve.NewMatchPhraseQuery(keyword),
 		bleve.NewMatchQuery(keyword),
 	))
@@ -140,13 +140,23 @@ func (index *ReadIndex) Search(
 		)
 	} else {
 		q := bleve.NewDisjunctionQuery(
-			setBoost(setField(bleve.NewTermQuery("nixpkgs"), "Source"), -150),
-			setBoost(setField(bleve.NewTermQuery("nur"), "Source"), -200),
+			setBoost(setField(bleve.NewTermQuery("nixpkgs"), "Source"), -1000),
+			setBoost(setField(bleve.NewTermQuery("nur"), "Source"), -5000),
 		)
 
 		query.AddShould(q)
 	}
 
+	mainProgramQuery := bleve.NewMatchQuery(keyword)
+	mainProgramQuery.SetField("MainProgram")
+	mainProgramQuery.SetBoost(50)
+	query.AddShould(mainProgramQuery)
+
+	mainProgramLiteralQuery := bleve.NewTermQuery(keyword)
+	mainProgramLiteralQuery.SetField("MainProgram")
+	mainProgramLiteralQuery.SetBoost(100)
+	query.AddShould(mainProgramLiteralQuery)
+
 	programsQuery := bleve.NewMatchQuery(keyword)
 	programsQuery.SetField("Programs")
 	programsQuery.SetBoost(2)
@@ -215,3 +225,12 @@ func (index *ReadIndex) GetDocument(
 
 	return nil, err
 }
+
+func (index *ReadIndex) Close() error {
+	err := index.index.Close()
+	if err != nil {
+		return errors.WithStack(err)
+	}
+
+	return nil
+}