diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 811afab76..791777bdc 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -227,7 +227,8 @@ public class CategorizationFragment extends Fragment { private Comparator sortBySimilarity(final String filter) { Comparator stringSimilarityComparator = StringSortingUtils.sortBySimilarity(filter); - return (firstItem, secondItem) -> stringSimilarityComparator.compare(firstItem.getName(), secondItem.getName()); + return (firstItem, secondItem) -> stringSimilarityComparator + .compare(firstItem.getName(), secondItem.getName()); } private List getStringList(List input) { diff --git a/app/src/main/java/fr/free/nrw/commons/utils/StringSortingUtils.java b/app/src/main/java/fr/free/nrw/commons/utils/StringSortingUtils.java index 95bd711f5..c3b54abd4 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/StringSortingUtils.java +++ b/app/src/main/java/fr/free/nrw/commons/utils/StringSortingUtils.java @@ -9,10 +9,19 @@ public class StringSortingUtils { //no-op } + /** + * Returns Comparator for sorting strings by its similarity with Levenshtein + * algorithm. By using this Comparator we get results from the highest to + * the lowest match. + * + * @param filter pattern to compare similarity + * @return Comparator with string similarity + */ + public static Comparator sortBySimilarity(final String filter) { return (firstItem, secondItem) -> { - double firstItemSimilarity = StringSortingUtils.calculateSimilarity(firstItem, filter); - double secondItemSimilarity = StringSortingUtils.calculateSimilarity(secondItem, filter); + double firstItemSimilarity = calculateSimilarity(firstItem, filter); + double secondItemSimilarity = calculateSimilarity(secondItem, filter); return (int) Math.signum(secondItemSimilarity - firstItemSimilarity); }; }