On Fri, 2008-07-25 at 09:17 +0300, Urho Konttori wrote:
> ext Jimmy Huang wrote:
> > Jamie,
> >
> > I wrote a C client using the tracker_keywords_search() function in
> > libtracker, and I passed in an array of two words {"first", "second"}
> > and it returns results of either first or second, but not only those
> > with both.  Is this a bug?
> >
> > Can you show me the equivalent SQL query for searching the Sqlite3
> > database instead using keywords?
> >
> > like
> >
> > select filepath from database
> > where keywords contains "first"
> > and keywords contains "second"
> >   
> Hi,
> 
> As far as I remember, the DC:keywords are stored as a combined string 
> with a space as the separator and in the ServiceKeywordMetadata table. 
> Anyway, this reply is based on that hypothesis. My apologies if it's not 
> correct.

there is a separate row for each keyword


> 
> I recommend using sqlite mozilla extension in firefox to get used to the 
> tracker database files, database contents and to be able to make the sql 
> queries before applying them to your actual application: 
> https://addons.mozilla.org/en-US/firefox/addon/5817
> 
> First, open ~/.cache/tracker/file-meta.db with sqlite (or with the 
> extension).
> 
> Then get the id of the DC:keywords.
> select id from MetadataTypes where Metaname='DC:Keywords'
> 
> You will get id. On my db that's 15.
> 
> Then do a:
> select ServiceId, MetadataValue
> from ServiceKeywordMetadata
> where Metadataid=<your id from previous query in here>
> and metadatavalue like '%keyword1%'
> and metadatavalue like '%keyword2%'


keywords are exact matches so do not use "like"

the bug is in tracker_keywords_search function in tracker-keywords.c

the query needs to join to a separate ServiceKeywordMetadata table for
each keyword

EG for 2 keywords:

Select distinct S.Path || '/' || S.Name as EntityName from Services S,
ServiceKeywordMetaData M1, ServiceKeywordMetaData M2 where  S.ID =
M1.ServiceID and M1.MetaDataValue = 'first' and M2.ServiceID = S.ID
and  M2.MetaDataValue = 'second'

jamie

_______________________________________________
tracker-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/tracker-list

Reply via email to