[tracker] libtracker-data: Trigger rebuild of FTS tokens on parser changes



commit 6a1dd9ca1776ef1c2c328f688fa7f55e2f19b5c6
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Jul 4 20:01:19 2015 +0200

    libtracker-data: Trigger rebuild of FTS tokens on parser changes
    
    Whenever there's a change in the implementation of our tokenizers, we'll
    trigger a rebuild of the FTS table. This allows for live updates to our
    tokenizers without the need to redo the database from scratch.
    
    The FTS rebuild is also triggered on locale changes.

 src/libtracker-data/tracker-data-manager.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index abbd673..62acf61 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -3658,6 +3658,20 @@ ontology_get_fts_properties (gboolean     only_new,
 
        return has_new;
 }
+
+static void
+rebuild_fts_tokens (TrackerDBInterface *iface,
+                    gboolean            creating_db)
+{
+       if (!creating_db) {
+               g_debug ("Rebuilding FTS tokens, this may take a moment...");
+               tracker_db_interface_sqlite_fts_rebuild_tokens (iface);
+               g_debug ("FTS tokens rebuilt");
+       }
+
+       /* Update the stamp file */
+       tracker_db_manager_tokenizer_update ();
+}
 #endif
 
 gboolean
@@ -4638,6 +4652,12 @@ tracker_data_manager_init (TrackerDBManagerFlags   flags,
                }
 
                tracker_db_manager_set_current_locale ();
+
+#if HAVE_TRACKER_FTS
+               rebuild_fts_tokens (iface, is_first_time_index);
+       } else if (!read_only && tracker_db_manager_get_tokenizer_changed ()) {
+               rebuild_fts_tokens (iface, is_first_time_index);
+#endif
        }
 
        if (!read_only) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]