[tracker] SPARQL: Support fts:rank and fts:offsets functions in queries
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] SPARQL: Support fts:rank and fts:offsets functions in queries
- Date: Tue, 27 Oct 2009 11:42:31 +0000 (UTC)
commit e054d745152ed389ae12260df5c738eba5f44c0d
Author: Jürg Billeter <j bitron ch>
Date: Thu Oct 8 13:42:32 2009 +0200
SPARQL: Support fts:rank and fts:offsets functions in queries
src/libtracker-data/tracker-sparql-query.vala | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala
index 755187b..65e5d7a 100644
--- a/src/libtracker-data/tracker-sparql-query.vala
+++ b/src/libtracker-data/tracker-sparql-query.vala
@@ -228,6 +228,7 @@ public class Tracker.SparqlQuery : Object {
}
const string FN_NS = "http://www.w3.org/2005/xpath-functions#";
+ const string FTS_NS = "http://www.tracker-project.org/ontologies/fts#";
string query_string;
bool update_extensions;
@@ -1207,6 +1208,18 @@ public class Tracker.SparqlQuery : Object {
sql.append (")");
return PropertyType.BOOLEAN;
+ } else if (uri == FTS_NS + "rank") {
+ bool is_var;
+ string v = parse_var_or_term (null, out is_var);
+ sql.append_printf ("\"%s_u_rank\"", v);
+
+ return PropertyType.DOUBLE;
+ } else if (uri == FTS_NS + "offsets") {
+ bool is_var;
+ string v = parse_var_or_term (null, out is_var);
+ sql.append_printf ("\"%s_u_offsets\"", v);
+
+ return PropertyType.STRING;
} else {
// support properties as functions
var prop = Ontology.get_property_by_uri (uri);
@@ -2421,6 +2434,15 @@ public class Tracker.SparqlQuery : Object {
binding.sql_db_column_name,
binding.variable.sql_expression);
+ if (is_fts_match) {
+ sql.append_printf ("rank(\"%s\".\"fts\") AS \"%s_u_rank\", ",
+ binding.table.sql_query_tablename,
+ binding.variable.name);
+ sql.append_printf ("offsets(\"%s\".\"fts\") AS \"%s_u_offsets\", ",
+ binding.table.sql_query_tablename,
+ binding.variable.name);
+ }
+
subgraph_var_set.insert (binding.variable, VariableState.BOUND);
}
binding_list.list.append (binding);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]