diff --git a/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java b/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java index da42927e2e..f1268201a5 100644 --- a/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java +++ b/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java @@ -839,28 +839,17 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback word = new ArrayList<>(); for (String w : query.trim().split("\\s+")) - if ("+".equals(w)) - plus = true; - else if ("-".equals(w)) - minus = true; - else { - if (plus) { - if (!text.contains(w)) - return false; - } else if (minus) { - if (!html && text.contains(w)) - return false; - } else - word.add(w); - plus = false; - minus = false; - } + if (w.length() > 1 && w.startsWith("+")) { + if (!text.contains(Fts4DbHelper.preprocessText(w.substring(1)))) + return false; + } else if (w.length() > 1 && w.startsWith("-")) { + if (!html && text.contains(Fts4DbHelper.preprocessText(w.substring(1)))) + return false; + } else + word.addAll(Arrays.asList(Fts4DbHelper.breakText(w).split("\\s+"))); if (word.size() == 0) return true; diff --git a/app/src/main/java/eu/faircode/email/Fts4DbHelper.java b/app/src/main/java/eu/faircode/email/Fts4DbHelper.java index 2a20176530..3f785a3d93 100644 --- a/app/src/main/java/eu/faircode/email/Fts4DbHelper.java +++ b/app/src/main/java/eu/faircode/email/Fts4DbHelper.java @@ -134,7 +134,7 @@ public class Fts4DbHelper extends SQLiteOpenHelper { db.delete("message", "rowid = ?", new String[]{Long.toString(id)}); } - private static String preprocessText(String text) { + static String preprocessText(String text) { return Normalizer.normalize(text.trim().toLowerCase(), Normalizer.Form.NFKD) .replaceAll("[\\p{InCombiningDiacriticalMarks}]", ""); }