diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-09-15 00:06:21 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-09-15 00:06:21 +0900 |
| commit | 834db962958652502aba88362dbe91df2ee618ee (patch) | |
| tree | 9c06fbcab83ad56e2d90f24a8d2cf016c6c1d005 /cmd/mbf/internal/pkgserver/search.go | |
| parent | cce7a996b06e516f5afcd41d2d67c2392000b6ab (diff) | |
cmd/mbf: rename pkgsite
This name is less ambiguous than pkgserver.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'cmd/mbf/internal/pkgserver/search.go')
| -rw-r--r-- | cmd/mbf/internal/pkgserver/search.go | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/cmd/mbf/internal/pkgserver/search.go b/cmd/mbf/internal/pkgserver/search.go deleted file mode 100644 index 15947804..00000000 --- a/cmd/mbf/internal/pkgserver/search.go +++ /dev/null @@ -1,81 +0,0 @@ -package pkgserver - -import ( - "cmp" - "maps" - "regexp" - "slices" - "time" -) - -type searchCache map[string]searchCacheEntry -type searchResult struct { - NameIndices [][]int `json:"name_matches"` - DescIndices [][]int `json:"desc_matches,omitempty"` - Score float64 `json:"score"` - *metadata -} -type searchCacheEntry struct { - query string - results []searchResult - expiry time.Time -} - -func (index *packageIndex) performSearchQuery(limit int, i int, search string, desc bool) (int, []searchResult, error) { - query := search - if desc { - query += ";withDesc" - } - entry, ok := index.search[query] - if ok && len(entry.results) > 0 { - return len(entry.results), entry.results[min(i, len(entry.results)-1):min(i+limit, len(entry.results))], nil - } - - regex, err := regexp.Compile(search) - if err != nil { - return 0, make([]searchResult, 0), err - } - res := make([]searchResult, 0) - for p := range maps.Values(index.names) { - nameIndices := regex.FindAllIndex([]byte(p.Name), -1) - var descIndices [][]int = nil - if desc { - descIndices = regex.FindAllIndex([]byte(p.Description), -1) - } - if nameIndices == nil && descIndices == nil { - continue - } - score := float64(indexsum(nameIndices)) / (float64(len(nameIndices)) + 1) - if desc { - score += float64(indexsum(descIndices)) / (float64(len(descIndices)) + 1) / 10.0 - } - res = append(res, searchResult{ - NameIndices: nameIndices, - DescIndices: descIndices, - Score: score, - metadata: p, - }) - } - slices.SortFunc(res[:], func(a, b searchResult) int { return -cmp.Compare(a.Score, b.Score) }) - expiry := time.Now().Add(1 * time.Minute) - entry = searchCacheEntry{ - query: search, - results: res, - expiry: expiry, - } - index.search[query] = entry - - return len(res), res[i:min(i+limit, len(entry.results))], nil -} -func (s *searchCache) clean() { - maps.DeleteFunc(*s, func(_ string, v searchCacheEntry) bool { - return v.expiry.Before(time.Now()) - }) -} -func indexsum(in [][]int) int { - sum := 0 - for i := range in { - sum += in[i][1] - in[i][0] - } - return sum -} |
