2006/11/23, Fabrice Colin &lt;<a href="mailto:fabrice.colin@gmail.com">fabrice.colin@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;">
Hello all,<br><br>On 11/23/06, Mikkel Kamstrup Erlandsen &lt;<a href="mailto:mikkel.kamstrup@gmail.com">mikkel.kamstrup@gmail.com</a>&gt; wrote:<br>&gt; 2006/11/22, Magnus Bergman &lt;<a href="mailto:magnus.bergman@observer.net">
magnus.bergman@observer.net</a>&gt;:<br>&gt; &gt; If several search engines are available, the search manager lets the<br>&gt; &gt; client know of each search engine according to your proposal (right?).<br>&gt; &gt; I think it would be a better idea to present a list of indexes (of which
<br>&gt; &gt; each search engine might provide several) to search in, but by default<br>&gt; &gt; search in all of them (if appropriate). I<br>&gt;<br>&gt; Well, the search engines are not obliged to use a particular index format.
<br>&gt; The indexes them selves can be of any format.<br>&gt;<br>What Magnus suggests may be useful for document 'sources' or 'groups' (for<br>lack of a better name), eg &quot;Documents&quot;, &quot;Applications&quot;, &quot;Contacts&quot;,
<br>&quot;Conversations&quot; etc... -as offered by some existing personal search systems-<br>which may or may not map to individual indexes (that mapping being irrelevant).</blockquote><div><br><br>That was exactly what I meant to cover with the &quot;group&quot; switch. Fx. the query &quot;fabrice group:contacts&quot; would return you. Searching without a specified group would return matches from all groups. Perhaps the wiki is a bit unclear here...
<br><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;">&gt; &gt; In addition to this session object I have found it suitable to also
<br>&gt; &gt; have a search object (created from a query) because applications might<br>&gt; &gt; construct very complicated queries. This object can then is passed<br>&gt; &gt; to countHits, and used for getting the hits. And also for getting
<br>&gt; &gt; attributes of the hit (matching document, score, language and such).<br>&gt; &gt; (Note that a hit is not equivalent to a document.)<br>&gt;<br>&gt; The problem with creating query objects like this, is that we are creating a
<br>&gt; dbus api. Essentially you only have simple data types at your hand. No<br>&gt; objects - especially objects with methods on them :-) It would be possible<br>&gt; to create a helper lib in &lt;insert favorite language + toolkit&gt; to construct
<br>&gt; queries conforming to the wasabi spec, but this would require separate libs<br>&gt; for gobject and qt. While this is by no means ruled out, I think we better<br>&gt; focus on the &quot;bare&quot; dbus api for now.
<br>&gt;</blockquote><div><br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Well, AFAIK, dbus allows complex structures like arrays or dictionaries.
</blockquote><div><br>Yeah, but that really only accounts as collections of simple data types in my book. What I meant was just that you can't have Query object, like fx Lucene does, and pass that over the wire. Not in a desktop neutral way at least - or please correct me if I'm wrong! :-)
<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;">&gt; The situation at hand is that we have a&nbsp;&nbsp;handful of desktop search engines,
<br>&gt; all implemented as daemons, both handling searches and indexing. Having an<br>&gt; extra daemon on top of that handling the query one extra time before passing<br>&gt; it to the search subsystem seems overkill... Ideally I see the daemon/lib
<br>&gt; (or even executable) to only be used as a means of obtaining a dbus object<br>&gt; path given a dbus interface name (&quot; org.freedesktop.search.simple&quot;).<br>&gt;<br>Agreed. The daemon's role would probably also include filtering out search
<br>services based on user preferences, wouldn't it ?</blockquote><div><br>&nbsp;</div>Yeah, that was my idea atleast. Perform a selection&nbsp; based on some sane criterias (read: user configuration). My idea was that the api consumer only
<br><div>needed to call getInterfaceProvider(&quot;org.freedesktop.search.simple&quot;) and then get one object path back to use for the dbus connection.<br><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;">
&gt; &gt; One thing that English users seldom consider is the usages of several<br>&gt; &gt; languages. Which language is being used is important to know in order<br>&gt; &gt; to decide what stemming rules to use, and which stop-words use (in
<br>&gt; &gt; English &quot;the&quot; is a stop-word while it in Swedish means tea and is<br>&gt; &gt; something that is adequate to search for). People using other languages<br>&gt; &gt; are very often multi lingual (using English as well). Therefore it is
<br>&gt; &gt; interesting to know which language the query is in (search engines<br>&gt; &gt; might also be able to translate queries to search in document written<br>&gt; &gt; in different languages).<br>&gt; &gt;<br>&gt;
<br>&gt; This is a good point. However I suggest leaving this up to the actual<br>&gt; implementations. After all it is an indexing time question what stemmer to<br>&gt; use when indexing a document...<br>&gt;<br>The language is also useful at query time for the query to be parsed &amp; tokenized
<br>in a way that's consistent with how documents text was at indexing time.<br>For instance, if the query is in English -as Magnus points out- you may want to<br>remove English stopwords, run an English stemmer on terms, or even limit the
<br>search to documents that were detected as being in English at indexing time.</blockquote><div><br>Right you are. I was a bit wasted last night when I&nbsp; answered Magnus (sorry) - I just thought her deserved an answer sooner rather than later.
<br><br>The question is then if this info should be stored in&nbsp; the manager daemon or the search engine. As I consider it more or less a design goal that the daemon (or lib or what ever we end up with), should be expendable, I don't think such info should lie with the managing object. Also if this info would reside with the managing object that would also mean each query should go through the managing interface, and I don't think I'm totally hooked on that idea.
<br><br>To avoid code duplication we could develop a small lib or other dbus service to *optionally* handle these issues. I'm reluctant to impose any dependency on the implementing engines.<br></div><br><br>Cheers,<br>Mikkel
<br></div>