[tracker] libtracker-fts: Use tracker:weight for per-property weight



commit d2042442e3a42bbbb1d0d45174b87f48e67ce6b0
Author: Jürg Billeter <j bitron ch>
Date:   Wed Oct 28 13:01:21 2009 +0100

    libtracker-fts: Use tracker:weight for per-property weight

 data/ontologies/11-rdf.ontology  |    5 ++
 data/ontologies/30-nie.ontology  |    1 +
 src/libtracker-fts/tracker-fts.c |  129 +++++++++++---------------------------
 3 files changed, 42 insertions(+), 93 deletions(-)
---
diff --git a/data/ontologies/11-rdf.ontology b/data/ontologies/11-rdf.ontology
index 172876e..4b0d051 100644
--- a/data/ontologies/11-rdf.ontology
+++ b/data/ontologies/11-rdf.ontology
@@ -90,6 +90,11 @@ tracker:isAnnotation a rdf:Property ;
 	rdfs:domain rdf:Property ;
 	rdfs:range xsd:boolean .
 
+tracker:weight a rdf:Property ;
+	nrl:maxCardinality 1 ;
+	rdfs:domain rdf:Property ;
+	rdfs:range xsd:integer .
+
 tracker:added a rdf:Property ;
 	nrl:maxCardinality 1 ;
 	rdfs:domain rdfs:Resource ;
diff --git a/data/ontologies/30-nie.ontology b/data/ontologies/30-nie.ontology
index 66e8495..582c019 100644
--- a/data/ontologies/30-nie.ontology
+++ b/data/ontologies/30-nie.ontology
@@ -28,6 +28,7 @@ nie:title a rdf:Property ;
 	nrl:maxCardinality 1 ;
 	rdfs:domain nie:InformationElement ;
 	rdfs:range xsd:string ;
+	tracker:weight 10 ;
 	tracker:fulltextIndexed true .
 
 nie:subject a rdf:Property ;
diff --git a/src/libtracker-fts/tracker-fts.c b/src/libtracker-fts/tracker-fts.c
index fd713ab..9cf2622 100644
--- a/src/libtracker-fts/tracker-fts.c
+++ b/src/libtracker-fts/tracker-fts.c
@@ -310,99 +310,6 @@
 static int default_column = 0;
 #endif
 
-/* Functions from Tracker */
-#if 0
-static TrackerDBResultSet *
-db_metadata_get (TrackerDBInterface *iface, 
-		 const gchar        *id, 
-		 const gchar        *key)
-{
-	TrackerProperty *def;
-	const gchar  *proc = NULL;
-
-	g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (iface), NULL);
-	g_return_val_if_fail (id, NULL);
-	g_return_val_if_fail (key, NULL);
-
-	def = tracker_ontology_get_property_by_name (key);
-	
-	if (!def) {
-		g_warning ("Metadata not found for id:'%s' and type:'%s'", id, key);
-		return NULL;
-	}
-
-	switch (tracker_property_get_data_type (def)) {
-	/*case TRACKER_PROPERTY_TYPE_STRING:
-	case TRACKER_PROPERTY_TYPE_DOUBLE:
-		proc = "GetMetadata";
-		break;
-
-	case TRACKER_PROPERTY_TYPE_INTEGER:
-	case TRACKER_PROPERTY_TYPE_DATE:
-		proc = "GetMetadataNumeric";
-		break;
-
-	case TRACKER_PROPERTY_TYPE_FULLTEXT:
-		proc = "GetContents";
-		break;*/
-		
-	default:
-		g_warning ("Metadata could not be retrieved as type:%d is not supported", 
-			   tracker_property_get_data_type (def)); 
-		return NULL;
-	}
-
-	/*return tracker_db_interface_execute_procedure (iface,
-						       NULL, 
-				     		       proc, 
-				     		       id, 
-				     		       tracker_property_get_id (def),
-				     		       NULL);*/
-}
-
-static gchar *
-db_get_text (const char     *service,
-	     const char     *key,    
-	     const char     *id) 
-{
-	TrackerDBInterface *iface;
-	gchar              *contents = NULL;
-	TrackerDBResultSet *result_set;
-	
-	if (strcmp (key, "File:Contents") == 0) {
-		iface = tracker_db_manager_get_db_interface_by_type (service,
-								     TRACKER_DB_CONTENT_TYPE_CONTENTS);
-	} else {
-		iface = tracker_db_manager_get_db_interface_by_type (service,
-								     TRACKER_DB_CONTENT_TYPE_METADATA);
-	}
-
-	result_set = db_metadata_get (iface, id, key);
-
-	if (result_set) {
-		tracker_db_result_set_get (result_set, 0, &contents, -1);
-		g_object_unref (result_set);
-	}
-
-	return contents;
-}
-#endif
-
-static inline int
-get_metadata_weight (int id)
-{
-	/* TODO */
-  /*if (id == 0)*/ return 1;
-
-  /*TrackerProperty *field = tracker_ontology_get_property_by_id (id);
-  
-  if (!field) return 1;
-
-  return tracker_property_get_weight (field);*/
-
-}
-
-
 
 /*
  * ** Default span for NEAR operators.
@@ -2484,6 +2391,42 @@ static const char *contentInsertStatement(fulltext_vtab *v){
   return stringBufferData(&sb);
 }
 
+
+/* Functions from Tracker */
+static inline int
+get_metadata_weight (int id)
+{
+  static sqlite3_stmt *stmt = NULL;
+
+  int rc;
+  int weight;
+
+  weight = 1;
+
+  /* We may want to cache this if this proofs to be a performance issue */
+
+  if (!stmt) {
+    rc = sqlite3_prepare_v2 (tracker_fts_vtab->db, "SELECT \"tracker:weight\" FROM \"rdf:Property\" WHERE ID = ?", -1, &stmt, NULL);
+    if (rc != SQLITE_OK) return weight;
+  } else {
+    sqlite3_reset (stmt);
+  }
+
+  rc = sqlite3_bind_int (stmt, 1, id);
+  if (rc != SQLITE_OK) return weight;
+
+  rc = sqlite3_step (stmt);
+  if (rc != SQLITE_ROW) return weight;
+
+  weight = sqlite3_column_int (stmt, 0);
+  if (weight == 0) {
+    weight = 1;
+  }
+
+  return weight;
+}
+
+
 /* Return a dynamically generated statement of the form
  *   select <content columns> from %_content where docid = ?
  */



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