@@ -262,6 +262,12 @@ def findDateInTitle(self, title):
262
262
return Datetime .ParseDate (result .group (0 )).date ()
263
263
return None
264
264
265
+ def LevenshteinRatio (self , first , second ):
266
+ if len (first ) == 0 or len (second ) == 0 :
267
+ return 0.0
268
+ else :
269
+ return 1 - (Util .LevenshteinDistance (first , second ) / float (max (len (first ), len (second ))))
270
+
265
271
def doSearch (self , url , ctx ):
266
272
html = HTML .ElementFromURL (url , sleep = REQUEST_DELAY )
267
273
found = []
@@ -391,14 +397,15 @@ def search(self, results, media, lang, manual):
391
397
#self.Log('scorebase1: %s', scorebase1)
392
398
#self.Log('scorebase2: %s', scorebase2)
393
399
394
- score = INITIAL_SCORE - Util .LevenshteinDistance (scorebase1 , scorebase2 )
400
+ # use LevenshteinRatio as distance smaller for short strings
401
+ score = int (round (self .LevenshteinRatio (scorebase1 , scorebase2 ) * 100.0 ))
395
402
396
403
if media .artist :
397
404
scorebase3 = media .artist
398
405
scorebase4 = author
399
406
#self.Log('scorebase3: %s', scorebase3)
400
407
#self.Log('scorebase4: %s', scorebase4)
401
- score = int (round ((score + INITIAL_SCORE - Util . LevenshteinDistance (scorebase3 , scorebase4 )) / 2 ) )
408
+ score = int (round ((score + self . LevenshteinRatio (scorebase3 , scorebase4 ) * 100.0 )) / 2 )
402
409
403
410
404
411
self .Log ('* Title is %s' , title )
0 commit comments