2007/1/24, Magnus Bergman &lt;<a href="mailto:magnus.bergman@observer.net">magnus.bergman@observer.net</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;">
On Sun, 21 Jan 2007 01:41:47 +0100<br>&quot;Mikkel Kamstrup Erlandsen&quot; &lt;<a href="mailto:mikkel.kamstrup@gmail.com">mikkel.kamstrup@gmail.com</a>&gt; wrote:<br><br>&gt; Here&#39;s an actual proposal for unifying the simple and live apis. I&#39;m
<br>&gt; not saying that we really really should do this, just that it is<br>&gt; doable, and it still allows for quite simple use cases (see below).<br>&gt; It is actually very much in spirit with Magnus&#39; very first proposal a
<br>&gt; while back. Praise late insight :-)<br>&gt;<br>&gt; == Unified API Proposal ==<br>&gt;<br>&gt; NewSession (out s session)<br>&gt;&nbsp;&nbsp;*<br>&gt;<br>&gt; SetProperty (in s session, in s prop, in s val)<br>&gt;&nbsp;&nbsp;* Set a property on the session. Prominent ones are
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;- live : whether or not to be in live mode. Default false.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;- hit.properties : semi colon separated list of field names.<br>&gt; Default &quot;uri&quot;.<br><br>Does the (potentially) expensive properties need to be included in
<br>hit.properties, or are they considered special?</blockquote><div><br><br>In the updated proposal the expensive properties are requested via the GetHitData method. Here you don&#39;t have to list the desired properties in 
hit.properties.<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;">&gt;<br>&gt; GetProperty (in s session, in s prop)<br>&gt;&nbsp;&nbsp;*<br>
&gt;<br>&gt; CloseSession (in s session)<br>&gt;&nbsp;&nbsp;* Close the session and all child searches<br>&gt;<br>&gt; Search (in s session, in s query_xml, out s search)<br>&gt;&nbsp;&nbsp;* Start a new search from a query<br>&gt;<br>&gt; CountHits (in s search, out i count)
<br>&gt;&nbsp;&nbsp;* Returns the current number of found hits. If live=false this call<br>&gt; blocks until the index has been fully searched.<br>&gt;<br>&gt; GetHits (in s search, in i num, out aav hits)<br>&gt;&nbsp;&nbsp;* Return num hits. If live=false this call blocks until there is num
<br>&gt; hits available or the index has been fully searched.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;The client should keep track of each hit&#39;s serial number if it<br>&gt; want to use GetHitData later.<br>&gt;<br>&gt; GetHitData (in s search, in ai hit_ids, in as properties, out aav
<br>&gt; hit_data)<br>&gt;&nbsp;&nbsp;* Get hit metadata. Intended for snippets or modified hits. hit_ids<br>&gt; are serial numbers as obtained from GetHits.<br><br>The GetHits/GetsHitsData functions was a quite elegant solution, I must
<br>say. But one thing isn&#39;t clear to me. Can any property be requested<br>with GetHitsData (restarting the search if needed)? Or just<br>those that are included in hit.properties? Or perhaps those that are<br>either expensive *or* included in 
hit.properties?</blockquote><div><br>Any property can be requested via GetHitData. That was the idea at least. I documented this on <a href="http://wiki.freedesktop.org/wiki/WasabiSearchLive">http://wiki.freedesktop.org/wiki/WasabiSearchLive
</a> now. <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;">Perhaps the &quot;current hit_id&quot; (the implicit offset used in GetHits) could
<br>be a property of the search?</blockquote><div><br>Well, then the Search object/handle would need properties anyway. Would it not be easier to put such counting functionality in a language/platform binding? It can easily be calculated by the client anyway.
<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;<br>&gt; CloseSearch (in s search)<br>&gt;&nbsp;&nbsp;* Close and free a search.<br>
&gt;<br>&gt; SIGNAL HitsAdded (in i count)<br>&gt; SIGNAL HitsRemoved (in ai hit_ids)<br>&gt; SIGNAL HitsModified (in ai hit_ids)<br><br>All in all I&#39;m very happy with this proposal.<br></blockquote></div><br>Ok, good. I updated the live proposal with most of your feedback.
<br><br>Cheers,<br>Mikkel<br>