From 78b05d2f133a1bcb5066dafef0c8a960451db5a0 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 12 Oct 2022 10:58:11 +0200 Subject: [PATCH] Break text for Chinese, etc --- .../email/BoundaryCallbackMessages.java | 29 +++++++++++++------ .../java/eu/faircode/email/Fts4DbHelper.java | 4 +-- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java b/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java index ce30255d13..4917f9dcf0 100644 --- a/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java +++ b/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java @@ -838,18 +838,29 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback word = new ArrayList<>(); for (String w : query.trim().split("\\s+")) - if (w.length() > 1 && (w.startsWith("+") || w.startsWith("-"))) { - if (w.startsWith("+") && !text.contains(w.substring(1))) - return false; - if (w.startsWith("-") && text.contains(w.substring(1))) - return false; - } else - word.add(w); + if ("+".equals(w)) + plus = true; + else if ("-".equals(w)) + minus = true; + else { + if (plus) { + if (!text.contains(w)) + return false; + } else if (minus) { + if (text.contains(w)) + return false; + } else + word.add(w); + plus = false; + minus = false; + } 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 f72a146793..2a20176530 100644 --- a/app/src/main/java/eu/faircode/email/Fts4DbHelper.java +++ b/app/src/main/java/eu/faircode/email/Fts4DbHelper.java @@ -134,12 +134,12 @@ public class Fts4DbHelper extends SQLiteOpenHelper { db.delete("message", "rowid = ?", new String[]{Long.toString(id)}); } - static String preprocessText(String text) { + private static String preprocessText(String text) { return Normalizer.normalize(text.trim().toLowerCase(), Normalizer.Form.NFKD) .replaceAll("[\\p{InCombiningDiacriticalMarks}]", ""); } - private static String breakText(String text) { + static String breakText(String text) { if (TextUtils.isEmpty(text)) return "";