Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0906baa authored by zhaoguomanong's avatar zhaoguomanong Committed by Michael Bestas
Browse files

Trebuchet: optimization of searching apps in Chinese



Signed-off-by: default avatarzhaoguomanong <zhaoguomanong@gmail.com>
Change-Id: Id322eb8b5249d6163da8a5d3476a6cf9500ad6bb
parent 2fd00ea2
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -81,6 +81,10 @@ public class DefaultAppSearchAlgorithm implements SearchAlgorithm {
            return false;
        }

        if (requestSimpleFuzzySearch(query)) {
            return title.toLowerCase().contains(query);
        }

        int lastType;
        int thisType = Character.UNASSIGNED;
        int nextType = Character.getType(title.codePointAt(0));
@@ -182,4 +186,17 @@ public class DefaultAppSearchAlgorithm implements SearchAlgorithm {
            return new StringMatcher();
        }
    }

    private static boolean requestSimpleFuzzySearch(String s) {
        for (int i = 0; i < s.length(); ) {
            int codepoint = s.codePointAt(i);
            i += Character.charCount(codepoint);
            switch (Character.UnicodeScript.of(codepoint)) {
                case HAN:
                    //Character.UnicodeScript.HAN: use String.contains to match
                    return true;
            }
        }
        return false;
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -68,8 +68,8 @@ public class DefaultAppSearchAlgorithmTest {

        assertTrue(DefaultAppSearchAlgorithm.matches(getInfo("电子邮件"), "电", MATCHER));
        assertTrue(DefaultAppSearchAlgorithm.matches(getInfo("电子邮件"), "电子", MATCHER));
        assertFalse(DefaultAppSearchAlgorithm.matches(getInfo("电子邮件"), "子", MATCHER));
        assertFalse(DefaultAppSearchAlgorithm.matches(getInfo("电子邮件"), "邮件", MATCHER));
        assertTrue(DefaultAppSearchAlgorithm.matches(getInfo("电子邮件"), "子", MATCHER));
        assertTrue(DefaultAppSearchAlgorithm.matches(getInfo("电子邮件"), "邮件", MATCHER));

        assertFalse(DefaultAppSearchAlgorithm.matches(getInfo("Bot"), "ba", MATCHER));
        assertFalse(DefaultAppSearchAlgorithm.matches(getInfo("bot"), "ba", MATCHER));