tracker r1625 - in branches/indexer-split: . src/tracker-indexer



Author: carlosg
Date: Tue Jun 10 12:59:46 2008
New Revision: 1625
URL: http://svn.gnome.org/viewvc/tracker?rev=1625&view=rev

Log:
2008-06-10  Carlos Garnacho  <carlos imendio com>

        * src/tracker-indexer/tracker-indexer-db.[ch]
        (tracker_db_set_metadata): Add argument to pass the parsed string for
        a value. Store data in the correct tables depending on the field data
        type.
        * src/tracker-indexer/tracker-indexer.c (index_metadata_foreach): pass
        the parsed value string to tracker_db_set_metadata().


Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c
   branches/indexer-split/src/tracker-indexer/tracker-indexer-db.h
   branches/indexer-split/src/tracker-indexer/tracker-indexer.c

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer-db.c	Tue Jun 10 12:59:46 2008
@@ -185,18 +185,56 @@
 tracker_db_set_metadata (TrackerDBInterface *iface,
 			 guint32             id,
 			 TrackerField       *field,
-			 const gchar        *value)
+			 const gchar        *value,
+			 const gchar        *parsed_value)
 {
 	gchar *id_str;
 
 	id_str = tracker_guint32_to_string (id);
 
-	/* FIXME: determine metadata type */
-	tracker_db_interface_execute_procedure (iface, NULL, "SetMetadataKeyword",
-						id_str,
-						tracker_field_get_id (field),
-						value,
-						NULL);
+	switch (tracker_field_get_data_type (field)) {
+	case TRACKER_FIELD_TYPE_KEYWORD:
+		tracker_db_interface_execute_procedure (iface, NULL,
+							"SetMetadataKeyword",
+							id_str,
+							tracker_field_get_id (field),
+							value,
+							NULL);
+		break;
+	case TRACKER_FIELD_TYPE_INDEX:
+	case TRACKER_FIELD_TYPE_STRING:
+	case TRACKER_FIELD_TYPE_DOUBLE:
+		tracker_db_interface_execute_procedure (iface, NULL,
+							"SetMetadata",
+							id_str,
+							tracker_field_get_id (field),
+							parsed_value,
+							value,
+							NULL);
+		break;
+	case TRACKER_FIELD_TYPE_INTEGER:
+	case TRACKER_FIELD_TYPE_DATE:
+		tracker_db_interface_execute_procedure (iface, NULL,
+							"SetMetadataNumeric",
+							id_str,
+							tracker_field_get_id (field),
+							value,
+							NULL);
+		break;
+	case TRACKER_FIELD_TYPE_FULLTEXT:
+		/* FIXME: missing DB connection to contents here */
+		/*
+		  tracker_db_set_text (iface, id, value);
+		*/
+		break;
+	case TRACKER_FIELD_TYPE_BLOB:
+	case TRACKER_FIELD_TYPE_STRUCT:
+	case TRACKER_FIELD_TYPE_LINK:
+		/* not handled */
+	default:
+		break;
+	}
+
 	g_free (id_str);
 }
 

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer-db.h
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer-db.h	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer-db.h	Tue Jun 10 12:59:46 2008
@@ -39,7 +39,8 @@
 void     tracker_db_set_metadata       (TrackerDBInterface *iface,
                                         guint32             id,
                                         TrackerField       *field,
-                                        const gchar        *value);
+                                        const gchar        *value,
+					const gchar        *parsed_value);
 void     tracker_db_set_text           (TrackerDBInterface *iface,
 					guint32             id,
 					const gchar        *text);

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer.c	Tue Jun 10 12:59:46 2008
@@ -381,6 +381,7 @@
 {
 	TrackerField *field;
 	MetadataForeachData *data;
+	gchar *parsed_value;
 	gchar **arr;
 	gint i;
 
@@ -391,10 +392,14 @@
 	field = tracker_ontology_get_field_def ((gchar *) key);
 
 	data = (MetadataForeachData *) user_data;
-	arr = tracker_parser_text_into_array ((gchar *) value,
-					      data->language,
-					      tracker_config_get_max_word_length (data->config),
-					      tracker_config_get_min_word_length (data->config));
+	parsed_value = tracker_parser_text_to_string ((gchar *) value,
+						      data->language,
+						      tracker_config_get_max_word_length (data->config),
+						      tracker_config_get_min_word_length (data->config),
+						      tracker_field_get_filtered (field),
+						      tracker_field_get_filtered (field),
+						      tracker_field_get_delimited (field));
+	arr = g_strsplit (parsed_value, " ", -1);
 
 	for (i = 0; arr[i]; i++) {
 		tracker_index_add_word (data->index,
@@ -404,8 +409,9 @@
 					tracker_field_get_weight (field));
 	}
 
-	tracker_db_set_metadata (data->db, data->id, field, (gchar *) value);
+	tracker_db_set_metadata (data->db, data->id, field, (gchar *) value, parsed_value);
 
+	g_free (parsed_value);
 	g_strfreev (arr);
 }
 



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