From: Ralph Boehme Date: Wed, 4 Jun 2014 10:11:40 +0000 (+0200) Subject: Spotlight: SPARQL query optimisations X-Git-Url: https://arthur.ath.cx/gitweb/?a=commitdiff_plain;h=feb46544b3ca8dcb52f318d05f14ae7ba1b79ec8;p=netatalk.git Spotlight: SPARQL query optimisations Use tracker:uri-is-descendant FILTER instead of regex for filtering results on the base path of the volume. Signed-off-by: Ralph Boehme --- diff --git a/NEWS b/NEWS index 6cdb7df2..f9c9052f 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +Changes in 3.1.3 +================ +* UPD: Spotlight: more SPARQL query optimisations + Changes in 3.1.2 ================ * FIX: Option "vol dbpath" was broken in 3.1.1 diff --git a/etc/spotlight/slmod_sparql_parser.c b/etc/spotlight/slmod_sparql_parser.c index bb06ba7a..f70d9ef1 100644 --- a/etc/spotlight/slmod_sparql_parser.c +++ b/etc/spotlight/slmod_sparql_parser.c @@ -1450,8 +1450,8 @@ yyreduce: { ssp_result = talloc_asprintf(ssp_slq, "SELECT ?url WHERE " - "{ ?obj nie:url ?url FILTER(regex(?url, '^file://%s/')) . %s} LIMIT 100", - ssp_slq->slq_vol->v_path, (yyvsp[(1) - (1)].sval)); + "{ %s . ?obj nie:url ?url . FILTER(tracker:uri-is-descendant('file://%s/', ?url)) } LIMIT 100", + (yyvsp[(1) - (1)].sval), ssp_slq->slq_vol->v_path); (yyval.sval) = ssp_result; } break; diff --git a/etc/spotlight/slmod_sparql_parser.y b/etc/spotlight/slmod_sparql_parser.y index be0b9034..0763b39c 100644 --- a/etc/spotlight/slmod_sparql_parser.y +++ b/etc/spotlight/slmod_sparql_parser.y @@ -73,8 +73,8 @@ line: expr { ssp_result = talloc_asprintf(ssp_slq, "SELECT ?url WHERE " - "{ ?obj nie:url ?url FILTER(regex(?url, '^file://%s/')) . %s} LIMIT 100", - ssp_slq->slq_vol->v_path, $1); + "{ %s . ?obj nie:url ?url . FILTER(tracker:uri-is-descendant('file://%s/', ?url)) } LIMIT 100", + $1, ssp_slq->slq_vol->v_path); $$ = ssp_result; } ;