2008/5/6 Philip Van Hoof &lt;<a href="mailto:spam@pvanhoof.be">spam@pvanhoof.be</a>&gt;:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>
On Tue, 2008-05-06 at 11:28 -0400, Jamie McCracken wrote:<br>
<br>
&gt;<br>
&gt; we dont want to implement on client !<br>
&gt;<br>
&gt; this is server based paging<br>
<br>
</div>I kinda agree with Jamie here.<br>
<br>
I don&#39;t really see the point in having state stored about sessions and<br>
searches on the service, if not for paging purposes.<br>
<br>
Maybe indeed for HitsAdded, HitsRemoved and HitsModified. But to have<br>
full session and search infrastructure just for that ... ?<br>
<br>
My opinion is that if paging is to be done entirely by the client, then<br>
HitsAdded, HitsRemoved and HitsModified should have to be done by the<br>
client too.<br>
<br>
Then you could have a stateless service, and that would have made a lot<br>
of sense indeed (far less complex service implementations).<br>
<br>
Having to store state of sessions but not getting paging from the<br>
service, sounds a bit like adding a lot for relatively few gain.<br>
<font color="#888888"></font></blockquote><div><br>Indeed the very first drafts of the API where stateless. After a lengthy debate everyone agreed on a stateful model (search the xdg archives on FDO). The wiki pages on FDO can also give you the prehistoric drafts if you are interested.<br>
<br>If I recall correctly some of the reasons where:<br><br>&nbsp;* Without state the query the query xml string will basically have to be the search handle, meaning that the server would have to recognize it on each request (parse it or md5 or whatever). This is a buggy behavior though since the same search is not guaranteed to return the same results at any later point in time<br>
<br>&nbsp;* State allows for a *lot* of optimizations on the server. For example retrieving fields from a Lucene index is not always fast - that depends on how your index is laid out, prefetching field data according to hit.fields can possibly pay off. For index-less backends state is even more essential.<br>
<br>&nbsp;* Knowing whether or not to monitor the result set is also very valuable (search.live). Find-as-you-type front ends can spawn many searches you know - likewise for user context searches (eg. dashbord)<br><br>There are lots of other reasons, but I really do not want to go into that discussion. It is at the very core of the spec and it is not really constructive to start picking on that at this point in time.<br>
<br>We can revisit it if we ever want to make API breaking changes (ie Xesam Search 2.0).<br><br>Cheers,<br>Mikkel<br></div></div>