2006/11/19, Jos van den Oever &lt;<a href="mailto:jvdoever@gmail.com">jvdoever@gmail.com</a>&gt;:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Mikkel,<br><br>Yes, the common dbus api is still something we need. I wanted to start<br>on the metadata standarization first, but we can do the searching api<br>in parallel. You make a good start in listing the available engines.
<br>There might even be more. To coordinate we need a process that lists<br>the available search engines over dbus. An application should be able<br>to say: I want to search using a particular interface with the<br>available search engines.
</blockquote><div><br>Agreed, that we need a dead easy way to get a list of search providers.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
The attached archive contains an effort to do two things:<br>- propose a very simple, common api for search engines<br>- implement such a coordinating daemon<br>&nbsp;&nbsp;The code contains the daemon, a demo search application and a python
<br>client to access it by finding the search engine over the<br>searchmanager.</blockquote><div><br><br>&nbsp;Great work. I like your dbus api docs!<br></div><div><br>I must admit that I'm very keen on getting a daemonless spec. There's already atleast one daemon running for search purposes, and having another on top of that seems overkill.
<br><br>I'd rather create library for finding search engines. This will require some runtime negotiation but I don't think it will be a significant impact. I have some rough ideas about a dbus api for this, I'll try and put it together...
<br></div><br>Of course if there are good arguments for a daemon then I'm willing to reconsider... :-)<br><br>About org.freedesktop.search.simple:<br><br>org.freedesktop.search.simple.startConfiguration ():<br>&nbsp;I would rather name it showConfiguration, but that is in the nit-picking end of the debate. for a simple search interface I guess it is ok to have coarse controls like this. A mote advanced interface could provide means to set and get specific parameters on the search engine.
<br><br>org.freedesktop.search.simple.countHits ( in s query , out i count ):<br>&nbsp;Why is this necesary. Is it to accomodate use cases such as suggestion popups like below[1], and reduce the dbus wire traffic for multiple calls?
<br><br>[1:]<br>Type text in entry: net<br>Get a popup with:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net&nbsp;&nbsp; (7801)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; network (6578)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; netto (17)<br><br>org.freedesktop.search.simple.query ( in s query, in i offset, in i limit , out as hits ):
<br>&nbsp;What is the general consumer of this  method? I don't see many. Only stuff like deskbar-applet or a general search tool would use it. Maybe adding a parameter to specify a list of groups the hits should match (or maybe specifying mimetypes). This argument could be &quot;*&quot; or something to get all kinds of results. I suggest changing the signature to:
<br>query ( in s query, in as groups, in i offset, in i limit , out as hits )<br><br>each string in the groups array should belong to fx:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Files&quot; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Folders&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Documents&quot;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Images&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Audio&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Videos&quot; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Development Files&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Conversations&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Playlists&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Applications&quot;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Contacts&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Emails&quot;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;EmailAttachments&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Notes&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Appointments&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Tasks&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Bookmarks&quot;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;History&quot;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Projects&quot;<br><br><br>How about live queries? Maybe that should be supported in another interface than the simple one.<br><br>org.freedesktop.search.simple.getProperties
 ( in as files,in a(sa(sas)) properties ):<br>&nbsp;This seems good. It is a bit toward a metadata interface, but I think it is good here to so apps don't need tons interfaces to work with. At some point it there should be a specification on how to name and format these properties/metadata.
<br><br>I'll have a closer look at your work and follow up tomorrow.<br><br>Cheers,<br>Mikkel<br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
The proposal for the search api is _very_ simple and I call for<br>application developers to see if the function calls in there are<br>sufficient.<br>Here i paste them for convenience:<br><br><br> interface org.freedesktop.search.simple
<br><br>method startConfiguration ( )<br>Open a graphical interface for configuring of search tool.<br><br>method countHits ( in s query , out i count )<br>Count the number of instances of a file that match a particular query.
<br>Input:<br>query<br>&nbsp;&nbsp;&nbsp;&nbsp;The query being performed.<br>Output:<br>count<br>&nbsp;&nbsp;&nbsp;&nbsp;The number of documents that match the query.<br><br>method query ( in s query, in i offset, in i limit , out as hits )<br>Perform a query and return a list of files that match the query.
<br>Input:<br>query<br>&nbsp;&nbsp;&nbsp;&nbsp;The query being performed.<br>offset<br>&nbsp;&nbsp;&nbsp;&nbsp;The offset in the result list for the first returned result.<br>limit<br>&nbsp;&nbsp;&nbsp;&nbsp;The maximum number of results that should be returned.<br><br>Output:<br>
hits<br>&nbsp;&nbsp;&nbsp;&nbsp;A list if filenames that are the result of the query.<br><br>method getProperties ( in as files,in a(sa(sas)) properties )<br>Get properties for the given files.<br>Input:<br>files<br>&nbsp;&nbsp;&nbsp;&nbsp;A list of files for which properties should be returned.
<br>properties<br>&nbsp;&nbsp;&nbsp;&nbsp;The properties belonging to each file. Each property is a name<br>associated with a list of string values. The index of each property<br>map in the list corresponds to the index of the filename in the list
<br>of files.<br><br>2006/11/3, Mikkel Kamstrup Erlandsen &lt;<a href="mailto:mikkel.kamstrup@gmail.com">mikkel.kamstrup@gmail.com</a>&gt;:<br>&gt; &gt; 2006/10/30, Jos van den Oever &lt;<br>&gt; &gt;<br>&gt; &gt; jvdoever at 
<a href="http://gmail.com">gmail.com</a>&gt;:<br>&gt; &gt;<br>&gt; &gt; &gt; To make it a bit more concrete (yes, you're probably not running<br>&gt; &gt; &gt; strigi svn) here's some code that generates the xml output using
<br>&gt; &gt; &gt; kde3's metadata framework. I'm sure doing the same for other programs<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; &gt; is easy too. Then comes the hard task: making it all consistent.<br>&gt; &gt;<br>&gt; &gt; Here's already a new version of the kde3 code. I forgot to escape the
<br>&gt; &gt; special xml entities.<br>&gt; &gt; It's probably a good idea to open up a project in svn for this stuff.<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; If there's enough interest about it, that is. Can someone arrange
<br>&gt; &gt; that? The testcases should also go in there.<br>&gt; &gt;<br>&gt; &gt; Cheers,<br>&gt; &gt; Jos<br>&gt; &gt;<br>&gt;<br>&gt;&nbsp;&nbsp;Picking up the track from Gnome d-d-l I am interested in hearing if your<br>&gt; are also looking into a unifying dbus api for desktop indexers? Being a
<br>&gt; deskbar developer I am greatly interested in this part of a potential spec.<br>&gt;<br>&gt;<br>&gt; If you are more on the metadata extraction part of it now (as it would seem)<br>&gt; I can try and make an overview of the current available apis, and try to
<br>&gt; make some form of synthesis we can use as a base for further discussion...<br>&gt;<br>&gt; Cheers,<br>&gt; Mikkel<br>&gt;<br>&gt;<br>&gt; PS: What indexers are around (and actively developed/maintained, and<br>&gt; actually has working code):
<br>&gt;<br>&gt;&nbsp;&nbsp;- Tracker <a href="http://www.gnome.org/~jamiemcc/tracker/">http://www.gnome.org/~jamiemcc/tracker/</a><br>&gt;<br>&gt;&nbsp;&nbsp;- Beagle <a href="http://beagle-project.org/">http://beagle-project.org/</a><br>&gt;&nbsp;&nbsp;- Strigi
<br>&gt; <a href="http://www.vandenoever.info/software/strigi/">http://www.vandenoever.info/software/strigi/</a><br>&gt;&nbsp;&nbsp;- Pinot <a href="http://pinot.berlios.de/">http://pinot.berlios.de/</a><br>&gt;&nbsp;&nbsp;- GLSCube <a href="http://www.glscube.org/">
http://www.glscube.org/</a><br>&gt;&nbsp;&nbsp;- Nepomuk<br>&gt; <a href="http://nepomuk-kde.semanticdesktop.org">http://nepomuk-kde.semanticdesktop.org</a> (do<br>&gt; they have any code?)<br>&gt;<br>&gt; _______________________________________________
<br>&gt; xdg mailing list<br>&gt; <a href="mailto:xdg@lists.freedesktop.org">xdg@lists.freedesktop.org</a><br>&gt; <a href="http://lists.freedesktop.org/mailman/listinfo/xdg">http://lists.freedesktop.org/mailman/listinfo/xdg
</a><br>&gt;<br>&gt;<br>&gt;<br><br><br></blockquote></div><br>