From 6526c6169ca893cc440dfbcb8c5ee1432274d936 Mon Sep 17 00:00:00 2001 From: Maxim Babichev Date: Sat, 13 Apr 2024 23:41:22 +0300 Subject: [PATCH] quality filter --- searcher.go | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/searcher.go b/searcher.go index ffbcf03..0038d48 100644 --- a/searcher.go +++ b/searcher.go @@ -133,24 +133,30 @@ func (s *searcher) search(query Query) (*Result, error) { return b.Headers.Len() - a.Headers.Len() }) - for _, stub := range stubs { - if match(query, stub) { - s.mark(query, stub.ID) - - return &Result{found: stub}, nil - } - } - var ( - similar *Stub = nil - rank float64 = 0 + found *Stub = nil + foundRank float64 = 0 + similar *Stub = nil + similarRank float64 = 0 ) for _, stub := range stubs { - if current := rankMatch(query, stub); current > rank { + current := rankMatch(query, stub) + if current > similarRank { similar = stub - rank = current + similarRank = current } + + if match(query, stub) && current > foundRank { + found = stub + foundRank = current + } + } + + if found != nil { + s.mark(query, found.ID) + + return &Result{found: found}, nil } if similar == nil {