tracker r1974 - in branches/indexer-split: . src/tracker-indexer tests/tracker-indexer



Author: ifrade
Date: Thu Jul 31 18:12:25 2008
New Revision: 1974
URL: http://svn.gnome.org/viewvc/tracker?rev=1974&view=rev

Log:
Fixed word deletion before flush

Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/tracker-indexer/tracker-index.c
   branches/indexer-split/tests/tracker-indexer/tracker-index-test.c

Modified: branches/indexer-split/src/tracker-indexer/tracker-index.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-index.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-index.c	Thu Jul 31 18:12:25 2008
@@ -138,8 +138,15 @@
 		if (current->id == service_id) {
 			/* The word was already found in the same service_id (file), increase score */
 			new_score = tracker_index_item_get_score (current) + weight;
-			current->amalgamated = tracker_index_item_calc_amalgamated (tracker_index_item_get_service_type (current), 
-										    new_score);
+			if (new_score < 1) {
+				array = g_array_remove_index (array, i);
+				if (array->len == 0) {
+					g_hash_table_remove (index->cache, word);
+				}
+			} else {
+				current->amalgamated = tracker_index_item_calc_amalgamated (tracker_index_item_get_service_type (current), 
+											    new_score);
+			}
 			return;
 		}
 	}

Modified: branches/indexer-split/tests/tracker-indexer/tracker-index-test.c
==============================================================================
--- branches/indexer-split/tests/tracker-indexer/tracker-index-test.c	(original)
+++ branches/indexer-split/tests/tracker-indexer/tracker-index-test.c	Thu Jul 31 18:12:25 2008
@@ -301,6 +301,33 @@
         g_remove (indexname);
 }
 
+static void
+test_remove_before_flush (void)
+{
+        TrackerIndex *index;
+        const gchar *indexname = "test-remove-before-flush.index";
+        gint id1;
+
+        const gchar *doc1 = "this is a text";
+        
+        g_remove (indexname);
+
+        index = tracker_index_new (indexname, BUCKET_COUNT);
+
+        /* Doc 1 */
+        id1 = insert_in_index (index, doc1);
+        
+        /* Remove before flush */
+        remove_in_index (index, doc1, id1);
+
+        tracker_index_flush (index);
+
+        tracker_index_free (index);
+
+        g_assert_cmpint (get_number_words_in_index (indexname), ==, 0);
+
+        g_remove (indexname);
+}
 
 int
 main (int argc, char **argv) {
@@ -328,6 +355,9 @@
         g_test_add_func ("/tracker/tracker-indexer/tracker-index/remove_document",
                          test_remove_document);
 
+        g_test_add_func ("/tracker/tracker-indexer/tracker-index/remove_before_flush",
+                         test_remove_before_flush);
+
         result = g_test_run ();
         
         return result;



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