all repos — searchix @ 61f28d3acb0f3cc7cc37ee384453c9cdfbaa9dbb

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

fix: match option name prefixes even when len > 25 Fixes: https://codeberg.org/alanpearce/searchix/issues/1

Alan Pearce
commit

61f28d3acb0f3cc7cc37ee384453c9cdfbaa9dbb

parent

b70a8644a90c22ed0fffef878f4061c6340732df

M internal/importer/options.gointernal/importer/options.go
@@ -172,6 +172,7 @@
// log.Debug("sending option", "name", kv.Key) results <- nix.Option{ Name: kv.Key, + NameNGram: kv.Key, Source: i.source.Key, Declarations: decs, Default: i.convertValue(i.optJSON.Default),
M internal/index/indexer.gointernal/index/indexer.go
@@ -106,10 +106,10 @@
keywordFieldMapping := bleve.NewKeywordFieldMapping() keywordFieldMapping.Analyzer = simple.Name - nameMapping := bleve.NewTextFieldMapping() - nameMapping.Analyzer = "c_name" - nameMapping.IncludeTermVectors = true - nameMapping.Store = false + nameNGramMapping := bleve.NewTextFieldMapping() + nameNGramMapping.Analyzer = "c_name" + nameNGramMapping.IncludeTermVectors = true + nameNGramMapping.Store = false nixValueMapping := bleve.NewDocumentStaticMapping() nixValueMapping.AddFieldMappingsAt("Text", textFieldMapping)
@@ -122,7 +122,8 @@ locFieldMapping.Store = false
optionMapping := bleve.NewDocumentStaticMapping() - optionMapping.AddFieldMappingsAt("Name", nameMapping) + optionMapping.AddFieldMappingsAt("Name", identityFieldMapping) + optionMapping.AddFieldMappingsAt("NameNGram", nameNGramMapping) optionMapping.AddFieldMappingsAt("Source", identityFieldMapping) optionMapping.AddFieldMappingsAt("Loc", locFieldMapping) optionMapping.AddFieldMappingsAt("RelatedPackages", textFieldMapping)
@@ -133,8 +134,8 @@ optionMapping.AddSubDocumentMapping("Example", nixValueMapping)
packageMapping := bleve.NewDocumentStaticMapping() - packageMapping.AddFieldMappingsAt("Name", nameMapping) - packageMapping.AddFieldMappingsAt("Attribute", nameMapping) + packageMapping.AddFieldMappingsAt("Name", nameNGramMapping) + packageMapping.AddFieldMappingsAt("Attribute", nameNGramMapping) packageMapping.AddFieldMappingsAt("Source", keywordFieldMapping) packageMapping.AddFieldMappingsAt("Description", descriptionFieldMapping) packageMapping.AddFieldMappingsAt("Homepages", keywordFieldMapping)
M internal/index/search.gointernal/index/search.go
@@ -187,6 +187,11 @@ nameQuery.SetField("Name")
nameQuery.SetBoost(2) query.AddShould(nameQuery) + nameNGramQuery := bleve.NewMatchQuery(keyword) + nameNGramQuery.SetField("NameNGram") + nameNGramQuery.SetBoost(2) + query.AddShould(nameNGramQuery) + namePrefixQuery := bleve.NewPrefixQuery(keyword) namePrefixQuery.SetField("Name") namePrefixQuery.SetBoost(10)
M internal/nix/option.gointernal/nix/option.go
@@ -22,6 +22,7 @@ }
type Option struct { Name string + NameNGram string Source string Declarations []Link Default *Value `json:",omitempty"`