2006/12/20, Jean-Francois Dockes &lt;<a href="mailto:jean-francois.dockes@wanadoo.fr">jean-francois.dockes@wanadoo.fr</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;">
Mikkel Kamstrup Erlandsen writes:<br>...<br> &gt; I think you are quite right. Except that maybe the output parameter of<br> &gt; simple.Query should be a{sa{sas}} - a map mapping uris to maps of<br> &gt; property-valuelist pairs. The trick is that metadata fields can have several
<br> &gt; values (like the simple.GetProperties method). If I request the Email.CC and<br> &gt; Email.To fields for example I&#39;d get something like<br> &gt;<br> &gt; {<br> &gt;&nbsp;&nbsp; &quot;email://mail_indetifier1&quot; : {
<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Mail.CC&quot; : [<a href="mailto:foo@bar.xyz">foo@bar.xyz</a>, <a href="mailto:emfle@birnan.xyz">emfle@birnan.xyz</a>],<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Mail.To&quot; : [&quot;<a href="mailto:linus.torvalds@microsoft.com">
linus.torvalds@microsoft.com</a>&quot;]<br> &gt;&nbsp;&nbsp; }<br> &gt;&nbsp;&nbsp; &quot;email://mail_indetifier2&quot; : {<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Mail.CC&quot; : [<a href="mailto:foo@bar.xyz">foo@bar.xyz</a>],<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Mail.To&quot; : [&quot;
<a href="mailto:bill@osdl.org">bill@osdl.org</a>&quot;]<br> &gt;&nbsp;&nbsp; }<br> &gt; }<br><br>This is were we disagree. You are requesting a seqence of &#39;limit&#39; results,<br>starting at offset &#39;i&#39;. There is no reason to have special treatment for
<br>the URI. It&#39;s just another property. The result list should be like:<br><br>{<br>&nbsp;&nbsp;&quot;URI&quot;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;email://mail_indetifier1&quot;<br>&nbsp;&nbsp;&quot;Mail.CC&quot; : [<a href="mailto:foo@bar.xyz">foo@bar.xyz</a>
, <a href="mailto:emfle@birnan.xyz">emfle@birnan.xyz</a>]<br>&nbsp;&nbsp;&quot;Mail.To&quot; : [&quot;<a href="mailto:linus.torvalds@microsoft.com">linus.torvalds@microsoft.com</a>&quot;]<br>}<br>{<br>&nbsp;&nbsp;&quot;URI&quot;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;email://mail_indetifier2&quot;
<br>&nbsp;&nbsp;&quot;Mail.CC&quot; : [<a href="mailto:foo@bar.xyz">foo@bar.xyz</a>],<br>&nbsp;&nbsp;&quot;Mail.To&quot; : [&quot;<a href="mailto:bill@osdl.org">bill@osdl.org</a>&quot;]<br>}<br><br>Just an ordered sequence of maps, the implicit key to the sequence is the
<br>record number from &#39;offset&#39; to &#39;offset+limit&#39;<br><br>I think that it is wrong to make the URI such a central element, it is not<br>so special for any backend I had had the opportunity to have a look at.
</blockquote><div><br><br>I don&#39;t care about the backends :-) I just want a convenient api for applications... (ofcourse I care greatly about backends - I was just making a point).<br><br>Having a unique handle for each document is a really handy thing. A unique handle could be many other things than an uri, fx a unique integer or anything as well. The way you describe this handle is just a number specifying an entry in an array and is in this way not unique (except in the context of a query).
<br>&nbsp;</div>The uri is just a more convenient handle than fx an integer - for applications at least (the toolkit and platform libs often handle uris directly).<br><br>I respect your disagreement, and would really like to hear what the other guys think...
<br><br><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 GetSnippet method must have a query string to match up against -<br> &gt; GetProperties do only need an uri and a list of requested props.
<br> &gt; Arguable they could both be merged into Query, but I feel it might be<br> &gt; overkill issuing a separate query to retrieve given metadata fields on a<br> &gt; given uri - that is more like a lookup in my mind (and also is for some
<br> &gt; engines).<br><br>The GetSnippet method if you need to have one can use the same ordinal key<br>that Query() is implicitely using. Using the URI for this forces awkward<br>processing on the backend side with no benefit to the application (which
<br>has to know the index of a result anyway).<br><br> &gt; You can&#39;t merge GetSnippet into you main query it is a relatively slow<br> &gt; operation on most engines, so you have to do that after you got the actual<br>
 &gt; hit.<br><br>Ok, so you don&#39;t request &quot;Snippet&quot; as a property in the initial query, and<br>re-call Query() with the appropriate record number, requesting the<br>&quot;Snippet&quot; property for the record you want the Snippet for. If getting a
<br>snippet is slow and costly, using a dbus transaction for it should not be an<br>issue.<br><br>Or if you really want to, you could define a call requesting snippets for a<br>list of result numbers. All I&#39;m saying is that &#39;URI&#39; is not a good result
<br>identifier.<br><br> &gt; These was the reasons why I split the methods like I did and I still think<br> &gt; they hold...<br><br>My central point is that &#39;URI&#39; is not a good result identifier. Results are<br>not organized by URI either on the application or backend side. The result
<br>list is an ordered sequence, the natural accessor is the number in the<br>sequence.</blockquote><div><br><br>Ok, I see you point about ordering. The response would have to include a score property for my proposal to work out.
<br><br><br>Pasting in Jean-Francois&#39;&nbsp; follow up mail:<br>&nbsp;&gt; As an afterthought to my previous message (sorry), the result list could<br>&nbsp;&gt; change if the query has to be re-run. This is a good reason for keeping the
<br>&nbsp;&gt; uris as document identifiers for getSnippets().<br></div><br><br>It would feel akward if you had to request a specific property (the uri) to be able to obtain a snippet IMHO.<br><br><br><br>Ok, my central point is: We need a unique handle for each document/object in store - this should be used to identify the returned hits from Query(). Whether or not an opaque handle of some undefined sort or it is defined to be the uri is another matter.
<br><br>To the sorting problem I see too solutions. 1) Always return a score property as part of the response properties as defined in my proposal. 2) Always include the UniqueHandle property as part of the response as defined by your proposal.
<br><br><br><br>Cheers,<br>Mikkel<br><br></div>