Introduced length limits
This commit is contained in:
@ -25,7 +25,7 @@ func AMVs(originalTerm string, maxLength int) []*arn.AMV {
|
||||
text := strings.ToLower(amv.Title.Canonical)
|
||||
similarity := stringutils.AdvancedStringSimilarity(term, text)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
results = append(results, &Result{
|
||||
obj: amv,
|
||||
similarity: similarity,
|
||||
@ -36,7 +36,7 @@ func AMVs(originalTerm string, maxLength int) []*arn.AMV {
|
||||
text = strings.ToLower(amv.Title.Native)
|
||||
similarity = stringutils.AdvancedStringSimilarity(term, text)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
results = append(results, &Result{
|
||||
obj: amv,
|
||||
similarity: similarity,
|
||||
|
@ -1,16 +1,24 @@
|
||||
package search
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/aerogo/flow"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
)
|
||||
|
||||
// MinimumStringSimilarity is the minimum JaroWinkler distance we accept for search results.
|
||||
const MinimumStringSimilarity = 0.89
|
||||
// MinStringSimilarity is the minimum JaroWinkler distance we accept for search results.
|
||||
const MinStringSimilarity = 0.89
|
||||
|
||||
// MaxSearchTermLength defines how long the search term can be.
|
||||
const MaxSearchTermLength = 100
|
||||
|
||||
// popularityDamping reduces the factor of popularity in search results.
|
||||
const popularityDamping = 0.0009
|
||||
|
||||
// ErrTermTooLong is used when the search term is too long
|
||||
var ErrTermTooLong = fmt.Errorf("Search term is too long (maximum %d characters)", MaxSearchTermLength)
|
||||
|
||||
// Result ...
|
||||
type Result struct {
|
||||
obj interface{}
|
||||
@ -23,6 +31,10 @@ func All(term string, maxUsers, maxAnime, maxPosts, maxThreads, maxTracks, maxCh
|
||||
return nil, nil, nil, nil, nil, nil, nil, nil
|
||||
}
|
||||
|
||||
if len(term) > MaxSearchTermLength {
|
||||
return nil, nil, nil, nil, nil, nil, nil, nil
|
||||
}
|
||||
|
||||
var (
|
||||
userResults []*arn.User
|
||||
animeResults []*arn.Anime
|
||||
|
@ -42,7 +42,7 @@ func Anime(originalTerm string, maxLength int) []*arn.Anime {
|
||||
// Canonical title
|
||||
similarity := check(anime.Title.Canonical)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
add(anime, similarity)
|
||||
continue
|
||||
}
|
||||
@ -50,7 +50,7 @@ func Anime(originalTerm string, maxLength int) []*arn.Anime {
|
||||
// English
|
||||
similarity = check(anime.Title.English)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
add(anime, similarity)
|
||||
continue
|
||||
}
|
||||
@ -58,7 +58,7 @@ func Anime(originalTerm string, maxLength int) []*arn.Anime {
|
||||
// Romaji
|
||||
similarity = check(anime.Title.Romaji)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
add(anime, similarity)
|
||||
continue
|
||||
}
|
||||
@ -67,7 +67,7 @@ func Anime(originalTerm string, maxLength int) []*arn.Anime {
|
||||
for _, synonym := range anime.Title.Synonyms {
|
||||
similarity := check(synonym)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
add(anime, similarity)
|
||||
goto nextAnime
|
||||
}
|
||||
@ -76,7 +76,7 @@ func Anime(originalTerm string, maxLength int) []*arn.Anime {
|
||||
// Japanese
|
||||
similarity = check(anime.Title.Japanese)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
add(anime, similarity)
|
||||
continue
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ func Companies(originalTerm string, maxLength int) []*arn.Company {
|
||||
text := strings.ToLower(stringutils.RemoveSpecialCharacters(company.Name.English))
|
||||
similarity := stringutils.AdvancedStringSimilarity(term, text)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
results = append(results, &Result{
|
||||
obj: company,
|
||||
similarity: similarity,
|
||||
|
@ -25,7 +25,7 @@ func SoundTracks(originalTerm string, maxLength int) []*arn.SoundTrack {
|
||||
text := strings.ToLower(track.Title.Canonical)
|
||||
similarity := stringutils.AdvancedStringSimilarity(term, text)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
results = append(results, &Result{
|
||||
obj: track,
|
||||
similarity: similarity,
|
||||
@ -36,7 +36,7 @@ func SoundTracks(originalTerm string, maxLength int) []*arn.SoundTrack {
|
||||
text = strings.ToLower(track.Title.Native)
|
||||
similarity = stringutils.AdvancedStringSimilarity(term, text)
|
||||
|
||||
if similarity >= MinimumStringSimilarity {
|
||||
if similarity >= MinStringSimilarity {
|
||||
results = append(results, &Result{
|
||||
obj: track,
|
||||
similarity: similarity,
|
||||
|
@ -23,7 +23,7 @@ func Users(originalTerm string, maxLength int) []*arn.User {
|
||||
// Similarity check
|
||||
similarity := stringutils.AdvancedStringSimilarity(term, text)
|
||||
|
||||
if similarity < MinimumStringSimilarity {
|
||||
if similarity < MinStringSimilarity {
|
||||
continue
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user