From 4648528faad04ab8e49715844c0bf3c2df3b2286 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 29 Sep 2022 07:13:25 +0200 Subject: [PATCH] Prepare tokenizer option --- .../java/eu/faircode/email/Fts4DbHelper.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Fts4DbHelper.java b/app/src/main/java/eu/faircode/email/Fts4DbHelper.java index 81ca24c3d5..307de76d09 100644 --- a/app/src/main/java/eu/faircode/email/Fts4DbHelper.java +++ b/app/src/main/java/eu/faircode/email/Fts4DbHelper.java @@ -22,11 +22,15 @@ package eu.faircode.email; import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; +import android.content.SharedPreferences; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.text.TextUtils; +import androidx.preference.PreferenceManager; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -63,6 +67,13 @@ public class Fts4DbHelper extends SQLiteOpenHelper { @Override public void onCreate(SQLiteDatabase db) { Log.i("FTS create"); + + // https://www.sqlite.org/fts3.html#tokenizer + // https://unicode.org/reports/tr29/ + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean unicode61 = prefs.getBoolean("unicode61", BuildConfig.DEBUG); + String tokenizer = (unicode61 ? "tokenize=unicode61 \"remove_diacritics=0\"" : null); + db.execSQL("CREATE VIRTUAL TABLE `message`" + " USING fts4" + " (`account`" + @@ -75,9 +86,8 @@ public class Fts4DbHelper extends SQLiteOpenHelper { ", `notes`" + ", notindexed=`account`" + ", notindexed=`folder`" + - ", notindexed=`time`)"); - // https://www.sqlite.org/fts3.html#tokenizer - // https://unicode.org/reports/tr29/ + ", notindexed=`time`" + + (tokenizer == null ? "" : ", " + tokenizer) + ")"); // https://www.sqlite.org/fts3.html#fts4aux db.execSQL("CREATE VIRTUAL TABLE message_terms USING fts4aux('message');");