diff --git a/db/search.go b/db/search.go index 7ba0a1c..9bc1fba 100644 --- a/db/search.go +++ b/db/search.go @@ -2,6 +2,12 @@ package db import ( "NUMParser/db/models" + "NUMParser/db/torrsearch" + "NUMParser/utils" + "github.com/agnivade/levenshtein" + "sort" + "strconv" + "strings" ) func indexTorrs() { @@ -11,28 +17,28 @@ func indexTorrs() { } func SearchTorr(query string) []*models.TorrentDetails { - //matchedIDs := torrsearch.Search(query) - //if len(matchedIDs) == 0 { - // return nil - //} - ////torrs := GetTorrs() - //var list []*models.TorrentDetails - //for _, id := range matchedIDs { - // list = append(list, torrs[id]) - //} - // - //hash := utils.ClearStr(query) - // - //sort.Slice(list, func(i, j int) bool { - // lhash := utils.ClearStr(strings.ToLower(list[i].Name+list[i].GetNames())) + strconv.Itoa(list[i].Year) - // lev1 := levenshtein.ComputeDistance(hash, lhash) - // lhash = utils.ClearStr(strings.ToLower(list[j].Name+list[j].GetNames())) + strconv.Itoa(list[j].Year) - // lev2 := levenshtein.ComputeDistance(hash, lhash) - // if lev1 == lev2 { - // return list[j].CreateDate.Before(list[i].CreateDate) - // } - // return lev1 < lev2 - //}) - //return list - return nil + matchedIDs := torrsearch.Search(query) + if len(matchedIDs) == 0 { + return nil + } + torrs := GetTorrs() + var list []*models.TorrentDetails + for _, id := range matchedIDs { + list = append(list, torrs[id]) + } + + hash := utils.ClearStr(query) + + sort.Slice(list, func(i, j int) bool { + lhash := utils.ClearStr(strings.ToLower(list[i].Name+list[i].GetNames())) + strconv.Itoa(list[i].Year) + lev1 := levenshtein.ComputeDistance(hash, lhash) + lhash = utils.ClearStr(strings.ToLower(list[j].Name+list[j].GetNames())) + strconv.Itoa(list[j].Year) + lev2 := levenshtein.ComputeDistance(hash, lhash) + if lev1 == lev2 { + return list[j].CreateDate.Before(list[i].CreateDate) + } + return lev1 < lev2 + }) + return list + //return nil }