<div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Apr 28, 2012 at 12:37 AM, Liam <span dir="ltr">&lt;<a href="mailto:xapian@networkimprov.net" target="_blank">xapian@networkimprov.net</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_extra">Re the Query structure spec, looks good.<br><blockquote style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">

<pre style="font-family:arial,helvetica,sans-serif">A query structure can be defined as:
            A query consisting of a single term.
            {
                tname: string,
                wqf: uint32, //default 1
                pos: uint32 //default 0
            }
            A query consisting of two or more subqueries, opp-ed together.
            AND, OR, SYNONYM, NEAR and PHRASE can take any number of subqueries. 
            Other operators take only the first two subqueries.
            {
                op: string,
                queries: [ object_querystructure1, ...]
            }
            A value range query on a document value.
            {
                op: string,
                slot: uint32,
                begin: string,
                end: string
            }
            A value comparison query on a document value.
            {
                op: string,
                slot: uint32,
                value: string,
            }</pre></blockquote><br>Does it accommodate these,  if so can you note where?<br>  Query (Query::op op_, Xapian::Query q, double parameter)<br></div></blockquote><div>will add <br>{<br>  op: string,<br>  query: object_querystructure,<br>
  parameter: number<br>
}<br> <br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_extra">  Query (Query::op op_, const std::string &amp;left, const std::string &amp;right)            {<br>

</div></blockquote><div><pre style="font-family:arial,helvetica,sans-serif">I think it can be handled by<br>{<br>  op: string,<br>  queries: [ object_querystructure1, ...]<br>}<br>with an array of two elements (the first being left and the second right)<br>

</pre></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_extra"><div><div>
<br><br><div class="gmail_quote">On Fri, Apr 27, 2012 at 11:14 AM, Liam <span dir="ltr">&lt;<a href="mailto:xapian@networkimprov.net" target="_blank">xapian@networkimprov.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


<div><div><div class="gmail_extra">Posting recent offline discussion...<div class="gmail_quote"><div class="gmail_extra"><div><br><br>On Fri, Apr 27, 2012 at 10:55 AM, Marius Tibeica <span dir="ltr">&lt;<a href="mailto:mtibeica@gmail.com" target="_blank">mtibeica@gmail.com</a>&gt;</span> wrote:<br>




</div><blockquote style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote"><div class="gmail_extra">Hi Liam,</div><div class="gmail_extra"><br></div><div class="gmail_extra">



I&#39;ve added the Enquire class and designed a query spec structured as a JS object. Hope you like it :)</div>
<div class="gmail_extra">
I&#39;ll probably be off a few days (there is a 
national holiday Tuesday which means i have a long weekend :D) but maybe
 I&#39;ll finish next week with the design phase.</div><span></span><br><span></span><span><font color="#888888">
Marius</font></span><div><br><br><br>On Thu, Apr 26, 2012 at 1:31 PM, Marius Tibeica <span dir="ltr">&lt;<a href="mailto:mtibeica@gmail.com" target="_blank">mtibeica@gmail.com</a>&gt;</span> wrote:<br></div></blockquote>



</div><blockquote style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">

<div class="gmail_extra"><blockquote>Hi Liam,<br><br>I have made the changes and added a few more classes: <a href="https://raw.github.com/mtibeica/node-xapian/master/docs.md" target="_blank">https://raw.github.com/mtibeica/node-xapian/master/docs.md</a><div>



<div><br>
<br><br><div class="gmail_quote">On Wed, Apr 25, 2012 at 11:48 AM, Liam Breck <span dir="ltr">&lt;<a href="mailto:networkimprov@gmail.com" target="_blank">networkimprov@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div class="gmail_extra">Hi, some thoughts...<br><br>I think this dev plan could go in a different file than the readme. Maybe start a <a href="http://docs.md" target="_blank">docs.md</a> markdown file?<br>
<br>
Function names: internally i use V8StyleCamelCaseNames, but I 
surface underscored_names to Javascript to follow the Xapian style. So 
if this text is intended to be a docs draft, switch to the latter.<br><br>Argument names: to indicate expected type in docs, prefix with the V8 type names &amp; underscore:<br>  string_n object_n array_n int32_n uint32_n function_n external_n boolean_n<br>







<br>
Similarly with result objects: { name:v8type }<br><br>(I generally use iArg, oArg, ioArg to indicate whether the arg is input, output, or both, but since JS functions get a single Arguments object, I abandoned that in this binding.)<br>







<br>
Should the list-iterator functions take optional start &amp; end arguments to allow the user to limit the range?<br><br>The Xapian query-builder functions are useful because the C++ compiler will validate user&#39;s query syntax. In JS we don&#39;t have a compiler, so an object-based query spec is easier to use, IMO.<div>





<br>
<br><div class="gmail_quote">On Wed, Apr 25, 2012 at 6:35 AM, Marius Tibeica <span dir="ltr">&lt;<a href="mailto:mtibeica@gmail.com" target="_blank">mtibeica@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">






<div class="gmail_extra">Hi Liam,</div><div class="gmail_extra"><br></div><div class="gmail_extra">I have made a draft for the Database class - 
<a href="https://github.com/mtibeica/node-xapian/blob/master/README.txt" target="_blank">https://github.com/mtibeica/node-xapian/blob/master/README.txt</a> </div><div class="gmail_extra">Let me know if you think it&#39;s ok and I will continue with the rest.</div>







<div class="gmail_extra">I have only added the Sync version, as the Async is pretty similar (callback with the return value instead of returning)</div><div class="gmail_extra"><br></div><div class="gmail_extra">As for the query, I was thinking about implementing most of the methods similar to the way they are in C++ (for people who already use xapian) and afterwards add helping methods.</div>






<span><font color="#888888">
<div class="gmail_extra"><br></div><div class="gmail_extra">Marius</div></font></span><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Apr 24, 2012 at 9:00 PM, Liam Breck <span dir="ltr">&lt;<a href="mailto:networkimprov@gmail.com" target="_blank">networkimprov@gmail.com</a>&gt;</span> wrote:<br>







<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_extra">Congrats Marius! Welcome aboard.<br><br>Writing up a draft for the APIs you&#39;ll be tackling sounds good. You can post it in your github fork as you work on it, and I&#39;ll comment there as you go. Watch for where you can combine API features into a higher-level function, as I did with Enquire::GetMset(). Doing sync &amp; async versions of many APIs makes sense. Node does this for the require(&#39;fs&#39;) module; see node-v.../src/node_file.cc<br>








<br>We might want to design a query spec structured as a JS object, instead of surfacing all the different query functions. For example:<br><br>  (one OR two) AND green ==&gt; {op:AND, terms:[ {op:OR, terms:[&#39;one&#39; , &#39;two&#39;]} , &#39;green&#39; ]}<br>








<br>Olly, you mentioned that you&#39;re moving to the MIT license, but I only see GPL in the github repo. There are multiple MIT licenses. Perhaps this one? <a href="http://xfree86.org/current/LICENSE4.html" target="_blank">http://xfree86.org/current/LICENSE4.html</a><span><font color="#888888"><br>








<br>Liam</font></span><div><div><br><br><div class="gmail_quote">On Tue, Apr 24, 2012 at 3:31 AM, Marius Tibeica <span dir="ltr">&lt;<a href="mailto:mtibeica@gmail.com" target="_blank">mtibeica@gmail.com</a>&gt;</span> wrote:<br>







<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Hi Liam,<div><br></div><div>I saw that I was chosen for GSoC and started my work by looking for ways in which Xapian is used.</div><div><br></div><div>At <a href="http://oligarchy.co.uk/xapian/1.2.9/Search-Xapian-1.2.9.0.tar.gz" target="_blank">http://oligarchy.co.uk/xapian/1.2.9/Search-Xapian-1.2.9.0.tar.gz</a> (the Xapian Perl binding) there are unit tests and simple and advanced query and indexing methods. </div>









<div>I will look for others and then create a draft of the nodejs interfaces of all the methods, if that is ok with you.</div><div><br></div><div>The one thing that I don&#39;t really know is how to decide which methods should be sync and which async. </div>









<div>While I had the irc interview the idea that the other xapian members liked the most was to implement both and explain in the documentation why one should be used over the other, especially since things can change over time. This isn&#39;t quite the node way but I think it is an acceptable compromise.</div>








<span><font color="#888888">
<div><br></div><div>Marius</div><div><br></div>
</font></span></blockquote></div></div></div></div>
</blockquote></div></div>
</div></div></blockquote></div></div></div>
</blockquote></div></div></div></blockquote>
</div></blockquote>
</div><br></div>
</div></div></blockquote></div><br></div></div></div>
<br>_______________________________________________<br>
Xapian-devel mailing list<br>
<a href="mailto:Xapian-devel@lists.xapian.org" target="_blank">Xapian-devel@lists.xapian.org</a><br>
<a href="http://lists.xapian.org/mailman/listinfo/xapian-devel" target="_blank">http://lists.xapian.org/mailman/listinfo/xapian-devel</a><br>
<br></blockquote></div><br></div>