diff options
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/de/pixart/messenger/utils/FtsUtils.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/main/java/de/pixart/messenger/utils/FtsUtils.java b/src/main/java/de/pixart/messenger/utils/FtsUtils.java index 86eeeeeaf..c6870d07e 100644 --- a/src/main/java/de/pixart/messenger/utils/FtsUtils.java +++ b/src/main/java/de/pixart/messenger/utils/FtsUtils.java @@ -44,10 +44,10 @@ public class FtsUtils { if (part.isEmpty()) { continue; } - final String cleaned = part.substring(getStartIndex(part), getEndIndex(part) + 1); + final String cleaned = clean(part); if (isKeyword(cleaned)) { term.add(part); - } else { + } else if (!cleaned.isEmpty()) { term.add(cleaned); } } @@ -76,9 +76,13 @@ public class FtsUtils { } private static int getStartIndex(String term) { + int length = term.length(); int index = 0; while (term.charAt(index) == '*') { ++index; + if (index >= length) { + break; + } } return index; } @@ -87,8 +91,20 @@ public class FtsUtils { int index = term.length() - 1; while (term.charAt(index) == '*') { --index; + if (index < 0) { + break; + } } return index; } + private static String clean(String input) { + int begin = getStartIndex(input); + int end = getEndIndex(input); + if (begin > end) { + return ""; + } else { + return input.substring(begin, end + 1); + } + } }
\ No newline at end of file |