Re: [Tracker] New branch for Xesam support in trackerd



2008/4/24 Mikkel Kamstrup Erlandsen <mikkel kamstrup gmail com>:
2008/4/24 Jerry Tan <Jerry Tan sun com>:

also, there is one tool called xesam-glib,
 >
 >  worth to take a look.
 >

 Infact I also wrote that :-)

 Also I am going to put in some generic server code in xesam-glib
 (there is already some, see [1]) anyway. And I am wondering how much I
 can share with Tracker.I don't think that it is mission critical for
 any of us to have collaboration between xesam-glib and Tracker, but I
 think we can make it work. But as we all know the devil is in the
 details and Tracker might just not fit nicely into a generic framework
 (considering live searchers and performance/scalability things tend to
 get complex).

 Here are my thoughts:

 The core of xesam-glib is the XesamGSearcher[2] interface which maps
 1-1 to the Xesam API except that it is GLib based (it is async with
 callbacks and GErrors). If you implement a XesamGSearcher you can pass
 it to a stub class (provided by xesam-glib) and have it magically
 exported over the bus.

 On the client side of tings my XesamGSession object takes a
 XesamGSearcher to talk to in the constructor. Xesam-glib then provides
 a proxy searcher XesamGDBusSearcher that will be the default searcher
 for Session objects. This is an incredibly powerful setup if I should
 flatter myself a bit :-) I can pass in custom (in-process, networked,
 avahi, bluetooth, wotnot XesamGSearchers) to my Sessions.

 To top this I am going to provide an aggregated XesamGSearcher that
 talks to a collection of XesamGSearchers and exposes it as a single
 XesamGSearcher. Say hello deskbar-on-crack.

 Xesam-GLib will provide a set of helper classes and interfaces for
 implementing XesamGSearchers.

  * Session/Search management
 This is completely generic. The catch is that we have to monitor for
 clients dropping of the bus (to close their sessions). Functionality
 like this is also easily encapsulated and shared in a lib.

 * Query construction and parsing
 This can also be made generic. My plan is to have a QueryParser class
 and a QueryBuilder interface. The parser saxes through the query xml
 and invokes methods on the builder. Depending on the implementation,
 the builder could emit a SQL-, Lucene- or Xapian query, or a
 GObject-domlike-tree modeling the query. Same approach will work on
 the user search language.

 * Ontology handling
 Parsing and querying of the ontology. It is not rocket science, but it
 is not exactly thrilling to write either.



 Any thoughts? Cheers,
 Mikkel


 [1]: http://www.grillbar.org/wordpress/?p=265
 [2]: http://xesam.org/people/kamstrup/xesam-glib/docs-0.2/reference/html/xesam-glib-xesam-g-searcher.html


Sorry the ref in [2] should have been
http://xesam.org/people/kamstrup/xesam-glib/docs-0.2/reference/html/XesamGDBusSearcherStub.html




 >
 >  > Hackers! Ping
 >  >
 >  > A group of people, including myself, have started a branch called
 >  > "xesam-support" where we are doing an attempt at adding support for
 >  > Xesam in the trackerd service.
 >  >
 >  > We branched from the indexer-split branch where all the cool new DBus
 >  > things are being done by people like frade, martyn and garnacho.
 >  >
 >  > http://svn.gnome.org/svn/tracker/branches/xesam-support
 >  >
 >  > http://svn.gnome.org/svn/tracker/branches/indexer-split
 >  >
 >  > Interesting new files:
 >  >
 >  > Types that represent a Xesam Session and a Xesam Search:
 >  > http://svn.gnome.org/svn/tracker/branches/xesam-support/src/trackerd/tracker-xesam-session.c
 >  > http://svn.gnome.org/svn/tracker/branches/xesam-support/src/trackerd/tracker-xesam-session.h
 >  > http://svn.gnome.org/svn/tracker/branches/xesam-support/src/trackerd/tracker-xesam-live-search.h
 >  > http://svn.gnome.org/svn/tracker/branches/xesam-support/src/trackerd/tracker-xesam-live-search.c
 >  >
 >  > The glib-dbus DBus proxy type (sorry for the confusion between "Search"
 >  > and "LiveSearch" (above), we decided on this name because of consistency
 >  > with the existing TrackerDBusSearch for /org/freedesktop/Tracker/Search.
 >  > This one serves as object for /org/freedesktop/xesam/Search (which is
 >  > consistent in naming within the existing infrastructure of trackerd's
 >  > code)
 >  >
 >  > http://svn.gnome.org/svn/tracker/branches/xesam-support/src/trackerd/tracker-xesam-search.c
 >  > http://svn.gnome.org/svn/tracker/branches/xesam-support/src/trackerd/tracker-xesam-search.h
 >  >
 >  > Some global API:
 >  > http://svn.gnome.org/svn/tracker/branches/xesam-support/src/trackerd/tracker-xesam.c
 >  > http://svn.gnome.org/svn/tracker/branches/xesam-support/src/trackerd/tracker-xesam.h
 >  >
 >  >
 >  > In the code, you'll notice that we aligned the Xesam specification
 >  > documentation for http://xesam.org/main/XesamSearchAPI to the types
 >  > TrackerXesamSearch 's and TrackerXesamSession 's gtk-doc comments. This
 >  > will make it more easy to get their implementations right and according
 >  > to spec.
 >  >
 >  > There are "todo" markers and "not-sure" markers in the current code.
 >  >
 >  > SO ... if you feel a sudden urge to just go for it, and help us with the
 >  > effort of getting it done: you are absolutely more than welcome. Meet us
 >  > (otella, pvanhoof, martyn, garnacho, frade, konttori) on #tracker at
 >  > irc.gimpnet.org.
 >  >
 >  > Just svn co http://svn.gnome.org/svn/tracker/branches/xesam-support or
 >  > svn co svn+ssh://svn.gnome.org/svn/tracker/branches/xesam-support
 >  >
 >  > ... and start coding!
 >  >
 >  >
 >  >
 >
 >  _______________________________________________
 >  tracker-list mailing list
 >  tracker-list gnome org
 >  http://mail.gnome.org/mailman/listinfo/tracker-list
 >




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