<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Our Geek Space &#187; moove-it</title>
	<atom:link href="http://blog.moove-it.com/category/moove-it/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.moove-it.com</link>
	<description>be free to express yourself...</description>
	<lastBuildDate>Thu, 26 Jan 2012 19:30:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Meet Moove-iT&#8217;s UX Group</title>
		<link>http://blog.moove-it.com/meet-moove-it-ux-group/</link>
		<comments>http://blog.moove-it.com/meet-moove-it-ux-group/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 16:49:33 +0000</pubDate>
		<dc:creator>sebastian.suttner</dc:creator>
				<category><![CDATA[best practices]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[moove-it]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[usablility]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[workshops]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=950</guid>
		<description><![CDATA[What do users really need? That&#8217;s the question any software developer should ask themselves. Here at moove-it, we always put ourselves in our clients shoes to understand their needs and give them exactly what they are looking for. In order to do so we&#8217;ve created the UX Department. From the moment we started gathering up [...]]]></description>
			<content:encoded><![CDATA[<p>What do users really need? That&#8217;s the question any software developer should ask themselves.</p>
<p>Here at moove-it, we always put ourselves in our clients shoes to understand their needs and give them exactly what they are looking for. In order to do so we&#8217;ve created the UX Department.</p>
<p>From the moment we started gathering up to discuss latest design patterns and the top UX tendencies, we knew something great would come out of it, and so it did. We managed to nurture the whole team with what we&#8217;ve learned, improve existing products and enhance new projects&#8217;s design from scratch.<br />
We&#8217;ll keep working as hard as possible on UX, not only because of how thrilled we&#8217;ve got with the results, but also because the way the users feel the product is what matters most.</p>
<p>We present partial conclusions found by the UX group. We share the presentation (in spanish)</p>
<div id="__ss_10310513" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"></strong><object id="__sse10310513" width="425" height="355" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=uxenproyectosdemooveit-111124103713-phpapp02&amp;stripped_title=ux-en-proyectos-de-mooveit&amp;userName=martincabrera" /><param name="allowscriptaccess" value="always" /><param name="allowfullscreen" value="true" /><embed id="__sse10310513" width="425" height="355" type="application/x-shockwave-flash" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=uxenproyectosdemooveit-111124103713-phpapp02&amp;stripped_title=ux-en-proyectos-de-mooveit&amp;userName=martincabrera" allowfullscreen="true" allowscriptaccess="always" wmode="transparent" /></object></p>
</div>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/meet-moove-it-ux-group/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>We run Montevideo 2011 &#8211; 10K Nike competition</title>
		<link>http://blog.moove-it.com/we-run-montevideo-2011-10k-nike-competition/</link>
		<comments>http://blog.moove-it.com/we-run-montevideo-2011-10k-nike-competition/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 19:05:19 +0000</pubDate>
		<dc:creator>Ariel Ludueña</dc:creator>
				<category><![CDATA[competitions]]></category>
		<category><![CDATA[moove-it]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[marathon]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=922</guid>
		<description><![CDATA[Last Saturday a group of brave Moovetians decided to accept the challenge and run the Nike 10K competition. Nike 10K consist in running 10 kms along the coastline through some Montevideo’s neighborhoods enjoying the beautiful landscape. Take a look at the pictures. The whole team  Silvana, Martin and Nicolas Ariel before breaking the finish ribbon [...]]]></description>
			<content:encoded><![CDATA[<p>Last Saturday a group of brave Moovetians decided to accept the challenge and run the Nike 10K competition.</p>
<p>Nike 10K consist in running 10 kms along the coastline through some Montevideo’s neighborhoods enjoying the beautiful landscape.</p>
<p>Take a look at the pictures.</p>
<h3 style="text-align: left;">The whole team<span class="Apple-style-span" style="font-size: 13px; font-weight: normal;"> </span></h3>
<p style="text-align: center;"><a href="http://blog.moove-it.com/wp-content/uploads/2011/11/Nike-We-run-Montevideo-2011-358.jpg" rel="lightbox[922]" title="The whole team"><img class="aligncenter size-full wp-image-923" title="The whole team" src="http://blog.moove-it.com/wp-content/uploads/2011/11/Nike-We-run-Montevideo-2011-358.jpg" alt="" width="675" height="448" /></a></p>
<h3>Silvana, Martin and Nicolas</h3>
<p style="text-align: center;"><a href="http://blog.moove-it.com/wp-content/uploads/2011/11/Nike-We-run-Montevideo-2011-344.jpg" rel="lightbox[922]" title="Nike-We-run-Montevideo-2011-344"><img class="aligncenter size-full wp-image-928" title="Nike-We-run-Montevideo-2011-344" src="http://blog.moove-it.com/wp-content/uploads/2011/11/Nike-We-run-Montevideo-2011-344.jpg" alt="" width="675" height="448" /></a></p>
<h3>Ariel before breaking the finish ribbon  :-P</h3>
<p style="text-align: center;"><a href="http://blog.moove-it.com/wp-content/uploads/2011/11/Nike-We-run-Montevideo-2011-071.jpg" rel="lightbox[922]" title="Nike-We-run-Montevideo-2011-071"><img class="aligncenter size-full wp-image-932" title="Nike-We-run-Montevideo-2011-071" src="http://blog.moove-it.com/wp-content/uploads/2011/11/Nike-We-run-Montevideo-2011-071.jpg" alt="" width="675" height="448" /></a></p>
<h3>Bird´s eye view</h3>
<p><a href="http://blog.moove-it.com/wp-content/uploads/2011/11/389452_10150450348467704_37391212703_10478562_1447301236_n.jpg" rel="lightbox[922]" title="Bird's eye view"><img class="aligncenter size-full wp-image-938" title="Bird's eye view" src="http://blog.moove-it.com/wp-content/uploads/2011/11/389452_10150450348467704_37391212703_10478562_1447301236_n.jpg" alt="" width="800" height="432" /></a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/we-run-montevideo-2011-10k-nike-competition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dart &#8211; A new language for structured web programming</title>
		<link>http://blog.moove-it.com/dart-a-new-language-for-structured-web-programming/</link>
		<comments>http://blog.moove-it.com/dart-a-new-language-for-structured-web-programming/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 13:40:47 +0000</pubDate>
		<dc:creator>Andreas Fast</dc:creator>
				<category><![CDATA[moove-it]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=905</guid>
		<description><![CDATA[On October 10th Lars Bak &#38; Gilad Bracha presented a technology preview on Dart. Lars Bak &#38; Gilad Bracha are Google employees leading the development of Dart. Dart is open source, so anyone can use and change it. It’s still in the early stages but the design goals are very clear. It aims to be [...]]]></description>
			<content:encoded><![CDATA[<div>On October 10th Lars Bak &amp; Gilad Bracha presented a technology preview on Dart. Lars Bak &amp; Gilad Bracha are Google employees leading the development of Dart. Dart is open source, so anyone can use and change it. It’s still in the early stages but the design goals are very clear. It aims to be a structured yet flexible programming language for the web. To feel familiar and be easy to learn, focus on high performance and fast startup. To be appropriate for all devices from phones and tablets to notebooks and servers. There is also a lot of work being done on tools for Dart to run fast on all major modern browsers. It runs on a Virtual Machine on the server and there is a tool to compile the code to javascript to run it on a browser. It also provides a DOM api.<br />
The following presentation shows the basics of the language including some examples. In addition, here are some photos of the presentation at moove-iT!</div>
<div>

<a href='http://blog.moove-it.com/dart-a-new-language-for-structured-web-programming/dart1/' title='Dart1'><img width="150" height="150" src="http://blog.moove-it.com/wp-content/uploads/2011/11/Dart1-150x150.jpg" class="attachment-thumbnail" alt="Dart1" title="Dart1" /></a>
<a href='http://blog.moove-it.com/dart-a-new-language-for-structured-web-programming/dart2/' title='Dart2'><img width="150" height="150" src="http://blog.moove-it.com/wp-content/uploads/2011/11/Dart2-150x150.jpg" class="attachment-thumbnail" alt="Dart2" title="Dart2" /></a>
<a href='http://blog.moove-it.com/dart-a-new-language-for-structured-web-programming/dart3/' title='Dart3'><img width="150" height="150" src="http://blog.moove-it.com/wp-content/uploads/2011/11/Dart3-150x150.jpg" class="attachment-thumbnail" alt="Dart3" title="Dart3" /></a>

</div>
<p>&nbsp;</p>
<div style="width:595px" id="__ss_9976959"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/ahfast/structured-web-programming-9976959" title="Structured web programming" target="_blank">Structured web programming</a></strong> <object id="__sse9976959" width="595" height="497"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=structuredwebprogramming1-111101090531-phpapp01&#038;rel=0&#038;stripped_title=structured-web-programming-9976959&#038;userName=ahfast" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse9976959" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=structuredwebprogramming1-111101090531-phpapp01&#038;rel=0&#038;stripped_title=structured-web-programming-9976959&#038;userName=ahfast" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="595" height="497"></embed></object> </div>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/dart-a-new-language-for-structured-web-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Second RubyConf in Uruguay &#8211; 11th and 12th November</title>
		<link>http://blog.moove-it.com/second-rubyconf-in-uruguay-11th-12th-november/</link>
		<comments>http://blog.moove-it.com/second-rubyconf-in-uruguay-11th-12th-november/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 01:19:45 +0000</pubDate>
		<dc:creator>Gabriela Isnardi</dc:creator>
				<category><![CDATA[moove-it]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[workshops]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rubyconf]]></category>
		<category><![CDATA[uruguay]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=900</guid>
		<description><![CDATA[We are sponsoring one of the greatest technology events here in Uruguay. The Second RubyConf taking place within less than two weeks, the 11th and 12th November 2011, where many IT experts from all over the world get together in order to be immersed in this dynamic world and and up to date get with [...]]]></description>
			<content:encoded><![CDATA[<p>We are sponsoring one of the greatest technology events here in Uruguay. The Second RubyConf taking place within less than two weeks, the 11th and 12th November 2011, where many IT experts from all over the world get together in order to be immersed in this dynamic world and and up to date get with the latest trends of Ruby and Agile methodologies.</p>
<p><a title="RubyConf Uruguay" href="http://rubyconfuruguay.org/" target="_blank">RubyConf Uruguay 2011</a></p>
<p>We are hungry for knowledge and refreshment, and we all want to be on the same train.</p>
<p>Please welcome all the new members to this awesome community. And help spreading the news, but even more important, do not miss the opportunity to meet the experts, discuss the future of RoR, and be Rail!</p>
<p><a href="http://blog.moove-it.com/wp-content/uploads/2011/11/newspaper-advertising-final-01-1024x710.jpg" rel="lightbox[900]" title="newspaper-advertising-final-01"><img class="alignleft size-large wp-image-901" title="newspaper-advertising-final-01" src="http://blog.moove-it.com/wp-content/uploads/2011/11/newspaper-advertising-final-01-1024x710.jpg" alt="" width="717" height="497" /></a></p>
<p>&nbsp;</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/second-rubyconf-in-uruguay-11th-12th-november/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You can’t help but Mooving…  (percussion workshop)</title>
		<link>http://blog.moove-it.com/you-can%e2%80%99t-help-but-mooving-percussion-workshop/</link>
		<comments>http://blog.moove-it.com/you-can%e2%80%99t-help-but-mooving-percussion-workshop/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 18:59:24 +0000</pubDate>
		<dc:creator>Gabriela Isnardi</dc:creator>
				<category><![CDATA[moove-it]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[workshops]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=875</guid>
		<description><![CDATA[Our main tradition, heritage and passion: The beat of the “Uruguayan” drums. It doesn’t matter if you listen to the drums once a month, everyday, or once a year.  When it comes to local music, there is nothing more Uruguayan than the sound produced by rhythmically striking a drum, and especially when playing Candombe, a unique [...]]]></description>
			<content:encoded><![CDATA[<p>Our main tradition, heritage and passion: The beat of the “Uruguayan” drums.</p>
<p>It doesn’t matter if you listen to the drums once a month, everyday, or once a year.  When it comes to local music, there is nothing more Uruguayan than the sound produced by rhythmically striking a drum, and especially when playing Candombe, a unique way of percussion, which will make your hair stand on its end.</p>
<p>Team building activities can range from treasure hunts to Safari trips, though this time, we have decided to do one which people could easily identify with, and which does not require sophisticated skills, but the desire to unwind, switch off and connect. Drumming workshops come first, the bonding is just a consequence.</p>
<p>Last week we had our first percussion workshop. Pablo Leites, an excellent musician and percussionist, also known as “Gancho” has been our instructor.  He has also been Martin Cabrera’s (Moove-IT cofounder) best friend for a long time.</p>
<p>Please have a look at the following pictures…</p>
<table>
<tbody>
<tr>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0017.jpg" rel="lightbox[875]" title="chica_DSC_0017"><img class="alignleft size-medium wp-image-885" title="chica_DSC_0017" src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0017-300x200.jpg" alt="" width="300" height="200" /></a></td>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_00060.jpg" rel="lightbox[875]" title="chica_DSC_00060"><img src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_00060-200x300.jpg" alt="" title="chica_DSC_00060" width="200" height="300" class="alignleft size-medium wp-image-895" /></a></td>
</tr>
<tr>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0060.jpg" rel="lightbox[875]" title="chica_DSC_0060"><img class="alignleft size-medium wp-image-882" title="chica_DSC_0060" src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0060-200x300.jpg" alt="" width="200" height="300" /></a></td>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0036.jpg" rel="lightbox[875]" title="chica_DSC_0036"><img class="alignleft size-medium wp-image-885" title="chica_DSC_0036" src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0036-300x200.jpg" alt="" width="300" height="200" /></a></td>
</tr>
<tr>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0054.jpg" rel="lightbox[875]" title="chica_DSC_0054"><img class="alignleft size-medium wp-image-885" title="chica_DSC_0054" src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0054-300x200.jpg" alt="" width="300" height="200" /></a></td>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0056.jpg" rel="lightbox[875]" title="chica_DSC_0056"><img class="alignleft size-medium wp-image-885" title="chica_DSC_0056" src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0056-300x200.jpg" alt="" width="300" height="200" /></a></td>
</tr>
<tr>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0082.jpg" rel="lightbox[875]" title="chica_DSC_0082"><img class="alignleft size-medium wp-image-885" title="chica_DSC_0082" src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0082-300x200.jpg" alt="" width="300" height="200" /></a></td>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0088.jpg" rel="lightbox[875]" title="chica_DSC_0088"><img class="alignleft size-medium wp-image-885" title="chica_DSC_0088" src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0088-300x200.jpg" alt="" width="300" height="200" /></a></td>
</tr>
<tr>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0076.jpg" rel="lightbox[875]" title="chica_DSC_0076"><img class="alignleft size-medium wp-image-885" title="chica_DSC_0076" src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0076-300x200.jpg" alt="" width="300" height="200" /></a></td>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0016.jpg" rel="lightbox[875]" title="chica_DSC_0016"><img class="alignleft size-medium wp-image-885" title="chica_DSC_0016" src="http://blog.moove-it.com/wp-content/uploads/2011/10/chica_DSC_0016-300x200.jpg" alt="" width="300" height="200" /></a></td>
</tr>
</tbody>
</table>
<p><strong>Why percussion</strong></p>
<p>Why is percussion so important to us? Being a country of immigrants, Uruguay was formed by people from all over the world. And like it always happens, music has played a tremendous positive role in bringing people together and creating stronger, more significant bonds. We connect with our basic instincts, we forget about language barriers, cultural differences, rank, and we just let ourselves feel and relax.  Just listen to a few strikes and you will feel multicolor, ageless and energized.</p>
<p>You may have heard of<em> Las Llamadas</em> (The Callings), a popular annual event during Carnival here in Uruguay, which gathers thousands of people from all over the world. The drums are the main stars, and the African music roots brought by the people once made slaves in this country (and happily freed more than 150 years ago) are now our truly genuine and local music.</p>
<p>I personally love this rhythm, and even though I am not a music expert I will recognize its pace wherever I go. I am not sure if it is the adrenaline than runs through your body, or the inseparable link to human nature, but percussion makes your body shake, like toddlers instinctively struggling to move their bodies to the rhythm of the music.</p>
<p>Team Building !!</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/you-can%e2%80%99t-help-but-mooving-percussion-workshop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alternatives to full text queries (part II)</title>
		<link>http://blog.moove-it.com/alternatives-to-full-text-queries-part-ii/</link>
		<comments>http://blog.moove-it.com/alternatives-to-full-text-queries-part-ii/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 18:48:23 +0000</pubDate>
		<dc:creator>Fernando Doglio</dc:creator>
				<category><![CDATA[moove-it]]></category>
		<category><![CDATA[full text]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[sphinx]]></category>
		<category><![CDATA[xapian]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=653</guid>
		<description><![CDATA[For part one, click here&#8230; What do they have in common and what makes them different? Even though it’s hard to come up with a comparison table between all four alternatives, mainly because I can’t claim to have personal experience with all of them, the Internet has a lot of information on the subject, so [...]]]></description>
			<content:encoded><![CDATA[<p>For part one, <a href="http://blog.moove-it.com/alternatives-to-full-text-queries-part-i/">click here</a>&#8230;</p>
<p><span style="font-size: large;"><strong>What do they have in common and what makes them different?</strong></span></p>
<p>Even though it’s hard to come up with a comparison table between all four alternatives, mainly because I can’t claim to have personal experience with all of them, the Internet has a lot of information on the subject, so I went ahead and did a bit of research on the matter.</p>
<p>Another point of interest to consider is that though on the long run, all four solutions provide very similar services; they do it a bit differently, since they can be categorized into two places:</p>
<ul>
<li><em>Full text search servers</em>: They provide a finished solution, ready for the developers to install and interact with. You don’t have to integrate them into your application; you only have to interact with them. In here we have <strong>Solr </strong>and <strong>Sphinx</strong>.</li>
<li><em>Full text search APIs</em>: They provide the functionalities needed by the developer, but at a lower level. You’ll need to integrate these APIs into your application, instead of just consuming it’s services through a standard interface (like what happens with the servers). In here, we have the <strong>Lucene Project </strong>and the <strong>Xapian project</strong>.</li>
</ul>
<p>Taking all of this into account, we can now proceed into a more in-depth discussion about our options:</p>
<p><span id="more-653"></span></p>
<h3><em><strong>Full text search servers</strong></em></h3>
<p>Like I’ve discussed before, search servers provide an end solution, ready to be installed, to be tweaked into your needs and to be interfaced with.</p>
<p>The installing and tweaking process can be hard, depending on your specific needs, but the bright side is that all of it is done <strong>outside your application </strong>and your code. Once you’re done and the server is installed according to your needs, the only step left is interacting with it from your application using one of the methods provided by the server.</p>
<p>So, what do they have in common?</p>
<ul>
<li>They’ll both satisfy your needs regarding searching and indexing speed, since they do it very efficiently.</li>
<li>They both have a long list of high-traffic sites using them, as we’ve seen above.</li>
<li>Both offer commercial support, which is great if you’re planning on developing a commercial application to use them.</li>
<li>Both offer client API bindings for several platforms/languages.</li>
<li>Both can be distributed to increase speed and capacity.</li>
<li>They both have great support for advanced querying. This allows them to use proximity search, relevance sorting and so on.</li>
</ul>
<p>Some differences:</p>
<ul>
<li>Solr is an Apache Project built on top of the Lucene Project, allowing it to improve some of it’s features whenever the Lucene projects updates. Sphinx is an isolated project, which requires it to improve independently.</li>
<li>Solr supports the use of wildcards for it’s searches, while the current release version of<br />
Sphinx (0.9) does not. The latest beta for Sphinx (2.0) though, appears to be supporting this feature.</li>
<li>Solr comes with spell check for search terms out of the box, while Sphinx does not.</li>
<li>Solr can parse rich text formats like Word documents, PDF files and so on; Sphinx does not provide this feature out of the box.</li>
<li>Sphinx integrates more tightly with RDBMSs, especially MySQL since it was built with this functionality in mind.</li>
<li>Sphinx can use the stopwords for a more relevant result ranking by default, whether Solr extracts them before doing the search.</li>
<li>Sphinx supports SQL as a query language, when Solr forces you to learn it’s own language.</li>
<li>Sphinx does not support multithreading on Windows machines, which slows down it’s performance on this OS.</li>
</ul>
<p><strong>So, which one is better?</strong></p>
<p>As you might have guessed, there is straight answer to this question, since they both do a similar job, but have different strong and weak points. This allows them to be better than the other for some specific cases.</p>
<p>On an out-of-the-box basis, for a generic search engine implementation, my opinion (which should be taken lightly, since it’s only the opinion of a single developer) would be to implement it with Solr.</p>
<p>This resolution comes based on the features that Solr provides out of the box. Some of them, being quite important for a search engine, such as wildcard support, rich text format parsing, and so on.</p>
<p>On the other hand, if your needs are as specific as indexing content from a database, then Sphinx would be the way to go, since it appears to have integration with that kind of content natively, which would assure a higher performance over other solutions.</p>
<h3><em><strong>Full text search APIs</strong></em></h3>
<p>In this case, we’ll be comparing APIs, which could be thought as “tools” to add to the “tool box” provided by the programming language you’re using.</p>
<p>Our two contestants are the <strong>Lucene Project </strong>and the <strong>Xapian project</strong>. They both have quite a number of followers and applications that use them, so lets see what else they have in common:</p>
<ul>
<li>They’re both highly portable. Lucene is written in JAVA, and thus it works on any JAVA capable OS. Xapian on the other hand is written in C++ and has support for most of the operative systems on the market.</li>
<li>They both support rich text formats, which is definitely a plus if you’re trying to index any type of information (no need to pre-process them yourself).</li>
<li>They both support advance search mechanics, like wildcards, proximity search, stemming, and so on.</li>
<li>They’re both able to add data into their index on a real-time basis, making information accessible immediately.</li>
</ul>
<p>Basically, Lucene and Xapian are both very much alike: they’re both very powerful and very customizable. And yet, they have some differences, as we’ll see next.</p>
<p>Some of the differences</p>
<ul>
<li>Lucene does not support faceted search, whilst Xapian does.</li>
<li>Lucene does not support spelling corrections out of the box, whilst Xapian does.</li>
<li>Xapian has support for synonyms out of the box, Lucene does not.</li>
<li>Lucene has been ported into other programming languages (like PHP, Ruby, C#, etc, etc) providing Lucene-like APIs for those languages.</li>
<li>Xapian provides bindings for other languages, but maintains a core API that’s always the same, securing that no matter which binding it is that you’re using, you’re always working with the official distribution and not a poorly done copy.</li>
</ul>
<p><strong>So, which one is better?</strong></p>
<p>In this case, the answer (according to my research) to this question is not, as one would expect, the same as the one between Sphinx and Solr.</p>
<p>According to what we can see from our list of common and different features, one would be inclined to believe that Xapian is the way to go (at least I am!) since it is clearly superior (on an out-of-the-box basis of course).</p>
<p>So, why would we ever pick Lucene? Well, for starters, Lucene’s ports tend to have a good integration with some of those languages’ most famous frameworks (on php, Zend framework implements the Lucene search API, Ruby has it’s own implementation as well, called Ferret, which in turn has a RoR plug-in, and so on), which would ease the development process considerably. This could actually be a major point in favor of Lucene, if what we’re already using (or are planning on using) one of those frameworks.</p>
<h3><strong>Final thoughts</strong></h3>
<p>All in all, there are many solutions out there worth the try, even though I’ve only covered those that would appear to be the four most known (or used) options. There are others like <a href="http://en.wikipedia.org/wiki/DataparkSearch"><span style="color: #000099;"><span style="text-decoration: underline;">DataparkSearch</span></span></a>, <span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://en.wikipedia.org/wiki/Ht-//Dig">Ht</a><a href="http://en.wikipedia.org/wiki/Ht-//Dig">-//</a><a href="http://en.wikipedia.org/wiki/Ht-//Dig">Dig</a></span></span>, <a href="http://en.wikipedia.org/wiki/MnoGoSearch"><span style="color: #000099;"><span style="text-decoration: underline;">mnoGoSearch</span></span></a>, <a href="http://en.wikipedia.org/wiki/KinoSearch"><span style="color: #000099;"><span style="text-decoration: underline;">KinoSearch</span></span></a>, and a very long etc, which might be the right pick for your needs.</p>
<p>What is really important to remember is that database engines are not the only solution out there for data handling. And also that full text search solutions are not the silver bullet needed to kill the proverbial werewolf that represents our searching problems either.</p>
<p>We need to think about our needs very carefully before choosing a technology or we can end up having that proverbial wolf biting our rear&#8230;</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/alternatives-to-full-text-queries-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seba Borrazas won the Programming Contest organized annually by ORT &#8211; Congrats!</title>
		<link>http://blog.moove-it.com/seba-borrazas-won-the-programming-contest-organized-annually-by-ort-congrats/</link>
		<comments>http://blog.moove-it.com/seba-borrazas-won-the-programming-contest-organized-annually-by-ort-congrats/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 13:56:14 +0000</pubDate>
		<dc:creator>Ariel Ludueña</dc:creator>
				<category><![CDATA[competitions]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[moove-it]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[workshops]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[ort]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming contest]]></category>
		<category><![CDATA[programming techniques]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=847</guid>
		<description><![CDATA[&#160; Today I want to write about Sebastian Borrazas and the programming contest he is taking part in. Sebastian Borrazas is a talented developer, member of an exclusive group of developers which makes Moove-IT a big company – I’m not talking about quantity, I’m talking about greatness -. Last week, he together with his team, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.moove-it.com/wp-content/uploads/2011/10/trofeo.gif" rel="lightbox[847]" title="Trofeo"><img class="size-full wp-image-849 aligncenter" title="Trofeo" src="http://blog.moove-it.com/wp-content/uploads/2011/10/trofeo.gif" alt="" width="207" height="251" /></a></p>
<p>&nbsp;</p>
<p>Today I want to write about <a title="Sebastian Borrazas" href="http://www.moove-it.com/employees/sebastian-borrazas" target="_blank">Sebastian Borrazas</a> and the programming contest he is taking part in.</p>
<p>Sebastian Borrazas is a talented developer, member of an exclusive group of developers which makes Moove-IT a big company – I’m not talking about quantity, I’m talking about greatness -.</p>
<p>Last week, he together with his team, <strong>won</strong> the Programming Contest organized annually by the ORT University of Montevideo, Uruguay.</p>
<p>The contest was basically about Programming Algorithms and Algorithm Design Techniques. Each group of contestants had to apply techniques like Backtracking, Dynamic programming, Divide &amp; Conquer, Knapsack, Dijkstra, etc.</p>
<p>The challenge was clear: to successfully do the greatest number of exercises in no more than 4 hours. Then the jury would evaluate the execution time of the Algorithm and have a winner.</p>
<p>Next step will be to travel to Buenos Aires, Argentina on November 5 to take part in the regionals. This will be hard. More than 500 teams from all over Latin America will be there too.</p>
<p>We are very proud to have Sebastian as our Geek Ambassador in this contest!</p>
<p>Good luck Moovetiano!</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/seba-borrazas-won-the-programming-contest-organized-annually-by-ort-congrats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alternatives to full text queries (part I)</title>
		<link>http://blog.moove-it.com/alternatives-to-full-text-queries-part-i/</link>
		<comments>http://blog.moove-it.com/alternatives-to-full-text-queries-part-i/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 13:17:41 +0000</pubDate>
		<dc:creator>Fernando Doglio</dc:creator>
				<category><![CDATA[moove-it]]></category>
		<category><![CDATA[full text]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[sphinx]]></category>
		<category><![CDATA[xapian]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=633</guid>
		<description><![CDATA[When it comes to data storage and data handling, we developers, are quite used to working with database engines (MySQL, Oracle, SQLite, etc) and database query languages.
But there are times, when the amount of information to be handled is so big (we’re talking about millions of rows of information) and the needed response times are so low (we’re talking about a few milliseconds time) that we need solutions designed specifically for searching large amount of information instead of generic data handling ones.]]></description>
			<content:encoded><![CDATA[<p>When it comes to data storage and data handling, we developers, are quite used to working with database engines (MySQL, Oracle, SQLite, etc) and database query languages.</p>
<p>Depending on the application being developed, one of these solutions can be more than enough to meet our needs and that is what we usually end up using.</p>
<p>But there are times, when the amount of information to be handled is so big (we’re talking about millions of rows of information) and the needed response times are so low (we’re talking about a few milliseconds time) that we need solutions designed specifically for searching large amount of information instead of generic data handling ones.</p>
<p><span id="more-633"></span></p>
<p><strong>What’s so good about them?</strong></p>
<p>While most database engines work great with very dynamic loads of information (i.e.: where new information needs to be shown in real-time), and managing highly complex relational data, sometimes what we need is actually a solution that can search through a great amount of data in a very short time, giving the user a quick response.</p>
<p>The solutions we’ll be talking about here, do just that, they give the developers a way of accessing information at a striking speed, but at a price: the information used is not always the most updated one<sup><a href="#sdfootnote1anc">1</a></sup>. Another lose to consider here, is the fact that these searching solutions do not manage relational information like relational databases do. So you need to be careful when choosing one over the other, and consider exactly what your needs are.</p>
<p><strong>How do they work?</strong></p>
<p>The way they work, is, roughly, by indexing all the information, using some of several indexing mechanics (like the use of stop words<sup><a href="#sdfootnote2anc">2</a></sup>, stemming<sup><a href="#sdfootnote3anc">3</a></sup>, etc). Once the information has been indexed, it is there (on the index) where the search takes place, instead of searching directly on the unprocessed data.</p>
<p>Some of the most interesting features presented by these APIs are:</p>
<ul>
<li><em>Ranked search</em>: The results can be returned ordered by the relevance of the match.</li>
<li><em>Proximity search</em>: Because sometimes, the searched terms are not written correctly, these APIs can return results that are close to the original ones.</li>
<li><em>The use of wildcards</em>: When searching, not always do we know the exact words, that’s when wildcards come into place, allowing us to specify a basic structure for our search and letting the search engine find the matching results.</li>
</ul>
<p><span style="font-size: medium;"><strong>Comparing some of them</strong></span></p>
<p>Considering this scenario, today we’ll be discussing some alternative options for data handling and querying. I’ve chosen these projects based on general opinion on internet, according to most places, these guys are the most known/used alternatives out there (there are many others of course).</p>
<p>Our options are:</p>
<ul>
<li><strong>Lucene:</strong> An Apache developed project, written entirely in Java.</li>
<li><strong>Xapian:</strong> An Open Source Search Engine Library, released under the<a href="http://www.opensource.org/licenses/gpl-license.php"><span style="color: #000099;"><span style="text-decoration: underline;">GPL</span></span></a> and written in C++.</li>
<li><strong>Sphinx: </strong>An open source full text search server with a high level of integration with database engines.</li>
<li><strong>Solr: </strong>Solr is a standalone enterprise search server with a REST-like API that uses Lucene as its base full-text search engine.</li>
</ul>
<p><strong>What am I looking for?</strong></p>
<p>Before even comparing products, it is important to understand that there is rarely a single solution to our problems. That almost every time, there is more than one product that will meet our needs.</p>
<p>Knowing this, I’ll be comparing products based on an “<strong>out-of-the-box</strong>” basis. This means, that no addons or plugins or anything will be taken into account for comparison purposes (we have to draw the line somewhere).</p>
<p><em><strong>My chosen criteria </strong></em></p>
<p>I won’t be benchmarking product’s speed against each others, if that’s what you’re looking for then stop reading here. Even though it might be a good measure of how good a product is (in some cases) I feel that in this particular case, where we don’t really have a specific problem to solve, those numbers would not bring anything of value to the table.</p>
<p>What I will be taking into account is the amount of features (search related features actually) that come with a product out of the box. I fell that this approach could give a basic understanding of which product stands over others for any generic given problem. In the end, based solely on this information, my resolution can be wrong (or misleading) for some specific cases, but then again, that’s not what I’m trying to solve, since in order to tackle specific scenarios this article would have to be extended into a small book.</p>
<p>Another point of notice, is the fact that all of the presented solutions (as we’ll see in a minute), are long term projects, with active support and under constant development (and improvement).</p>
<p><span style="font-size: x-large;"><strong>The projects</strong></span></p>
<p>Now that we know what we’ll be comparing and what to look for on our projects, lets take a look at them:</p>
<p><span style="font-size: medium;"><strong>Lucene</strong></span></p>
<hr />
<p>Apache Lucene(TM) is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.</p>
<p>It has support for indexing several industry standards, like Word documents, Excel, PowerPoint, PDF, HTML files and many more.</p>
<p><em><strong>Basic features</strong></em></p>
<h2><span style="font-size: x-small;">High performance indexing</span></h2>
<ul>
<li>Over 95GB/hour on modern hardware</li>
<li>Incremental indexing as fast as batch indexing</li>
<li>Index size roughly 20-30% the size of text indexed</li>
</ul>
<h2><span style="font-size: x-small;">Powerful, Accurate and Efficient Search Algorithms</span></h2>
<ul>
<li>Ranked searching &#8212; best results are returned first</li>
<li>Many powerful query types:
<ul>
<li>Phrase queries: allows for more than one word to be used on the search.</li>
<li>Use of wildcards: The API supports the use of “*” and “?” as wildcards on queries.</li>
<li>Proximity queries: Use of ~ to find look-a-like words.</li>
<li>Range queries: Used for range of numbers (1 to 10), sorted words (Amanda to Sabrina), date range and more.</li>
</ul>
</li>
</ul>
<ul>
<li>Fielded searching (e.g., title, author, contents)</li>
<li>Sorting by any field</li>
<li>Multiple-index searching with merged results</li>
<li>Allows simultaneous update and searching</li>
</ul>
<h2><span style="font-size: x-small;">Cross-Platform Solution</span></h2>
<ul>
<li>Available as Open Source software under the <span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache</a><a href="http://www.apache.org/licenses/LICENSE-2.0.html">License</a></span></span> which lets you use Lucene in both commercial and Open Source programs</li>
<li>100%-pure Java</li>
<li>Implementations in other programming languages available that are index-compatible
<ul>
<li>PHP: <span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://framework.zend.com/manual/en/zend.search.html">Zend</a><a href="http://framework.zend.com/manual/en/zend.search.html">Search</a></span></span></li>
<li>Ruby: <a href="http://ferret.davebalmain.com/trac/"><span style="color: #000099;"><span style="text-decoration: underline;">Ferret</span></span></a></li>
<li>C++: <a href="http://sourceforge.net/projects/clucene/"><span style="color: #000099;"><span style="text-decoration: underline;">CLucene</span></span></a></li>
<li>Many others!</li>
</ul>
</li>
</ul>
<p><strong>Who uses it?</strong></p>
<p>This is a widely used API, and some of the major software companies that use it are:</p>
<ul>
<li>Eclipse: The Eclipse IDE uses Lucene for searching it’s documentation.</li>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://reviews.cnet.com/">CNET</a><a href="http://reviews.cnet.com/">Reviews</a></span></span> &#8211; Product Listing pages with Filter drill downs.</li>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://www.alphaworks.ibm.com/tech/emailsearch">IBM</a><a href="http://www.alphaworks.ibm.com/tech/emailsearch">OmniFind</a><a href="http://www.alphaworks.ibm.com/tech/emailsearch">Personal</a><a href="http://www.alphaworks.ibm.com/tech/emailsearch">e</a><a href="http://www.alphaworks.ibm.com/tech/emailsearch">-</a><a href="http://www.alphaworks.ibm.com/tech/emailsearch">mail</a><a href="http://www.alphaworks.ibm.com/tech/emailsearch">Search</a></span></span> &#8211; A semantic search engine for your e-mail.</li>
<li>Others like Linkedin, AOL, etc (full list <a href="http://wiki.apache.org/lucene-java/PoweredBy"><span style="color: #000099;"><span style="text-decoration: underline;">here</span></span></a>)</li>
</ul>
<p><span style="font-size: medium;"><strong>Xapian</strong></span></p>
<hr />
<p>Xapian, like Lucene, is another open source, widely used full text search API, but unlike the first one, this one is written in C++.</p>
<p><strong>Some basic features:</strong></p>
<p><strong>Cross-platform</strong></p>
<ul>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://trac.xapian.org/wiki/SupportedPlatforms">Highly</a><a href="http://trac.xapian.org/wiki/SupportedPlatforms">portable</a></span></span> &#8211; runs on Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Solaris, HP-UX, Tru64, IRIX, and probably other Unix platforms; as well as Microsoft Windows and OS/2.</li>
</ul>
<ul>
<li>Written in C++.
<ul>
<li>Perl bindings are available in the module<span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://search.cpan.org/%7Eolly/Search-Xapian/">Search</a><a href="http://search.cpan.org/%7Eolly/Search-Xapian/">::</a><a href="http://search.cpan.org/%7Eolly/Search-Xapian/">Xapian</a><a href="http://search.cpan.org/%7Eolly/Search-Xapian/">on</a><a href="http://search.cpan.org/%7Eolly/Search-Xapian/">CPAN</a></span></span>.</li>
<li>Java JNI bindings are included in the xapian-bindings module.</li>
<li>It supports<a href="http://www.swig.org/"><span style="color: #000099;"><span style="text-decoration: underline;">SWIG</span></span></a> which generates bindings for many languages like Python, PHP, Tcl, C#, Ruby and Lua.</li>
</ul>
</li>
</ul>
<p><strong>Great algorithms:</strong></p>
<ul>
<li>Ranked probabilistic search &#8211; important words get more weight than unimportant words, so the most relevant documents are more likely to come near the top of the results list.</li>
<li>Relevance feedback &#8211; given one or more documents, Xapian can suggest the most relevant index terms to expand a query, suggest related documents, categorize documents, etc.</li>
<li>Phrase and proximity searching &#8211; users can search for words occurring in an exact phrase or within a specified number of words, either in a specified order, or in any order.</li>
<li>Full range of structured boolean search operators (&#8220;stock NOT market&#8221;, etc). The results of the boolean search are ranked by the probabilistic weights. Boolean filters can also be applied to restrict a probabilistic search.</li>
<li>Supports stemming of search terms (e.g. a search for &#8220;football&#8221; would match documents which mention &#8220;footballs&#8221; or &#8220;footballer&#8221;). This helps to find relevant documents which might otherwise be missed. Stemmers are currently included for many languages (not only English), like Danish, Dutch, English, Finnish, French, German and more.</li>
<li>Wildcard search is supported (e.g. &#8220;xap*&#8221;).</li>
<li>Synonyms are supported, both explicitly (e.g. &#8220;~cash&#8221;) and as an automatic form of query expansion.</li>
<li>Xapian can suggest spelling corrections for user supplied queries. This is based on words which occur in the data being indexed, so works even for words which wouldn&#8217;t be found in a dictionary (e.g. &#8220;xapian&#8221; would be suggested as a correction for &#8220;xapain&#8221;).</li>
</ul>
<p><strong>Faceted Search</strong></p>
<p>Xapian supports this added feature, called faceted search. What this basically means, is that search queries can have categories of interest and so can the terms and information indexed. This allows Xapian to narrow your search, to a particular sub-set of categories.</p>
<p><strong>Performance:</strong></p>
<ul>
<li>Supports database files &gt; 2GB &#8211; essential for scaling to large document collections.</li>
<li>Platform independent data formats &#8211; you can build a database on one machine and search it on another.</li>
<li>Allows simultaneous update and searching. New documents become searchable right away.</li>
</ul>
<p><strong>Who uses it?</strong></p>
<ul>
<li>Debian GNU/Linux</li>
<li>Debian use Xapian for:
<ul>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://lists.debian.org/search.html">Debian</a><a href="http://lists.debian.org/search.html">Mailing</a><a href="http://lists.debian.org/search.html">List</a><a href="http://lists.debian.org/search.html">Archive</a><a href="http://lists.debian.org/search.html">Search</a></span></span></li>
<li>Languages: Danish, Dutch, English, Finnish, French, German, Hungarian, Italian, Portuguese, Romanian, Russian, Spanish, Swedish, and Turkish</li>
<li>Database size: 3.9 million messages (2009-05-18)</li>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://wiki.debian.org/">Debian</a><a href="http://wiki.debian.org/">Wiki</a><a href="http://wiki.debian.org/">Search</a></span></span></li>
<li>Database size: over 6700 pages (2009-05-18)</li>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://packages.debian.org/">Searching</a><a href="http://packages.debian.org/">their</a><a href="http://packages.debian.org/">archive</a><a href="http://packages.debian.org/">of</a><a href="http://packages.debian.org/">software</a><a href="http://packages.debian.org/">packages</a></span></span></li>
<li>Database size: over 30000 packages (2009-03-16)</li>
</ul>
</li>
</ul>
<ul>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://kug.ub.uni-koeln.de/">Library</a><a href="http://kug.ub.uni-koeln.de/">of</a><a href="http://kug.ub.uni-koeln.de/">the</a><a href="http://kug.ub.uni-koeln.de/">University</a><a href="http://kug.ub.uni-koeln.de/">of</a><a href="http://kug.ub.uni-koeln.de/">Cologne</a></span></span>
<ul>
<li>Xapian is used with<a href="http://www.openbib.org/"><span style="color: #000099;"><span style="text-decoration: underline;">OpenBib</span></span></a> to search the library&#8217;s OPAC (Online Public Access Catalogue)</li>
</ul>
</li>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://spin.de/">spin</a><a href="http://spin.de/">.</a><a href="http://spin.de/">de</a></span></span>
<ul>
<li>Application: Free online community with profiles, chat, boards, blogs, games, and more</li>
</ul>
</li>
</ul>
<p><span style="font-size: medium;"><strong>Sphinx </strong></span></p>
<hr />
<p>Our third item on the list is Sphinx, an open source full text search server. This one was designed for indexing database content. It currently supports MySQL, PostgreSQL, and ODBC-compliant databases as data sources natively.</p>
<p>The integration with RDBMSs (Relational Data Base Management Systems) allows us to use Sphinx as if it were a database itself. As it is with the rest of these solutions, this might be the thing that you need for your application or it can be completely irrelevant.</p>
<p><strong>Some basic features:</strong></p>
<p><strong>Performance and scalability</strong></p>
<ul>
<li><strong>Indexing performance.</strong> Sphinx indexes up to 10-15 MB of text per second per single CPU core, that is <strong>60+ MB/sec per server</strong> (on a dedicated indexing machine).</li>
<li><strong>Searching performance.</strong> According to their statistics, searching through 1,000,000-document (a 1.2GB text collection) runs at around 500 queries/sec on a 2-core desktop machine, with 2GB or RAM.</li>
<li><strong>Scalability.</strong> Biggest known Sphinx cluster indexes almost <strong>5 billion documents</strong>, resulting in over <strong>6 TB of data</strong>.</li>
</ul>
<p><strong>Key features</strong></p>
<ul>
<li><strong>Batch and Real-Time full-text indexes.</strong> Two index backends that support both offline index construction and incremental on-the-fly index updates are available.</li>
<li><strong>Non-text attributes support</strong>. An arbitrary number of attributes (product IDs, company names, prices, etc) can be stored in the index and used either just for retrieval (to avoid hitting the DB), or for efficient Sphinx-side search result set post-processing.</li>
<li><strong>SQL database indexing.</strong> Sphinx can directly access and index data stored in MySQL (all storage engines are supported), PostgreSQL, Oracle, Microsoft SQL Server, SQLite, Drizzle, and anything else that supports ODBC.</li>
<li><strong>Non-SQL storage indexing.</strong> Data can also be streamed to batch indexer in a simple XML format called XMLpipe, or inserted directly into an incremental RT index.</li>
<li><strong>Easy application integration.</strong>Sphinx comes with three different APIs:
<ul>
<li>SphinxAPI is a native library available for Java, PHP, Python, Perl, C, and other languages.</li>
<li>SphinxSE, a pluggable storage engine for MySQL, enables huge result sets to be shipped directly to MySQL server for post-processing.</li>
<li>SphinxQL lets the application query Sphinx using standard MySQL client library and query syntax.</li>
</ul>
</li>
<li><strong>Advanced full-text searching syntax</strong>. It’s querying engine supports arbitrarily complex queries combining boolean operators, phrase, proximity, strict order, and quorum matching, field and position limits, exact keyword form matching, substring searches, etc.</li>
<li><strong>Rich database-like querying features.</strong> Sphinx does not limit you to just keyword searching. On top of full-text search result set, you can compute arbitrary arithmetic expressions, add WHERE conditions, do ORDER BY, GROUP BY, use MIN/MAX/AVG/SUM, aggregates etc. Essentially, full-blown SQL SELECT is supported.</li>
<li><strong>Relevance ranking.</strong> Sphinx claims to have a better-than-average ranking algorithm, analyzing keyword proximity, and ranking closer phrase matches higher, with perfect matches ranked on top. Also, ranking is flexible: you can choose from a number of built-in relevance functions, tweak their weights by using expressions, or develop new ones.</li>
<li><strong>Flexible text processing.</strong> Sphinx indexing features include full support for SBCS and UTF-8 encodings (meaning that effectively all world&#8217;s languages are supported); stopword removal and optional hit position removal (hitless indexing); morphology and synonym processing through word forms dictionaries and stemmers; exceptions and blended characters; and many more.</li>
<li><strong>Distributed searching.</strong> Searches can be distributed across multiple machines, enabling horizontal scale-out and high availability.</li>
</ul>
<p>Some things to notice that are not provided by Sphinx:</p>
<ul>
<li>Wildcards: Sphinx (on it’s release version) does not allow the use of wildcards on it’s searches, although it’s latest beta version does.</li>
<li>Sphinx cannot parse rich text format documents (like Word documents, PDF files, etc).</li>
</ul>
<p><strong>Who uses it?</strong></p>
<ul>
<li><a href="http://craigslist.org/"><span style="color: #000099;"><span style="text-decoration: underline;">Craigslist</span></span></a>: A classifieds page, with more than 20 billion page views per month.</li>
<li><a href="http://dailymotion.com/"><span style="color: #000099;"><span style="text-decoration: underline;">DailyMotion</span></span></a>: Widely used video site.</li>
<li><a href="http://netlog.com/"><span style="color: #000099;"><span style="text-decoration: underline;">NetLog</span></span></a>: Social network with more than 77million users.</li>
</ul>
<p><span style="font-size: large;"><strong>Solr</strong></span></p>
<hr />
<p>Solr is an open source enterprise search platform from the Apache Lucene project. This means that it uses (and extends) the Lucene full-text search API we talked before, for all the full-text searches. This particular feature is of note, since this allows Solr to improve whenever the Lucene project integrates an improvement into its product. This is especially true as of May 2011, since both projects decided to merge.</p>
<p>It also differentiates from the other solutions presented here, because of it’s unique REST-like interface. You can put documents in it (called &#8220;indexing&#8221;) via XML, JSON or binary over HTTP and then you query them via HTTP GET and receive XML, JSON, or binary results.</p>
<p>This makes Solr completely language independent, allowing any developer using an HTTP capable programming language to interact with this platform.</p>
<p><strong>Some basic features:</strong></p>
<p><strong>Searching:</strong></p>
<ul>
<li>Advanced Full-Text Search Capabilities
<ul>
<li>External file-based configuration of stopword lists, synonym lists, and protected word lists</li>
<li>Many additional text analysis components including word splitting, regex and sounds-like filters</li>
<li>Sort by any number of fields, and by complex functions of numeric fields</li>
<li>Spelling suggestions for user queries</li>
<li>“<em>More Like This” </em>suggestions for given document</li>
</ul>
</li>
</ul>
<p><strong>Caching</strong></p>
<ul>
<li>Configurable Query Result, Filter, and Document cache instances</li>
<li>Pluggable Cache implementations, including a lock free, high concurrency implementation</li>
<li>Cache warming in background
<ul>
<li>When a new searcher is opened, configurable searches are run against it in order to warm it up to avoid slow first hits. During warming, the current searcher handles live requests.</li>
</ul>
</li>
<li>Auto warming in background
<ul>
<li>The most recently accessed items in the caches of the current searcher are re-populated in the new searcher, enabling high cache hit rates across index/searcher changes.</li>
</ul>
</li>
<li>Fast/small filter implementation</li>
</ul>
<p><strong>Admin Interface</strong></p>
<ul>
<li>Full logging control</li>
<li>Text analysis debugger, showing result of every stage in an analyzer</li>
<li>Web Query Interface w/ debugging output
<ul>
<li>parsed query output</li>
<li>Lucene explain() document score detailing</li>
<li>explain score for documents outside of the requested range to debug why a given document wasn&#8217;t ranked higher.</li>
</ul>
</li>
</ul>
<p>Amongst others&#8230;</p>
<p><strong>Who uses It?</strong></p>
<ul>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://www.whitehouse.gov/">http</a><a href="http://www.whitehouse.gov/">://</a><a href="http://www.whitehouse.gov/">www</a><a href="http://www.whitehouse.gov/">.</a><a href="http://www.whitehouse.gov/">whitehouse</a><a href="http://www.whitehouse.gov/">.</a><a href="http://www.whitehouse.gov/">gov</a><a href="http://www.whitehouse.gov/">/</a></span></span> &#8211; Uses Solr via Drupal for site search w/highlighting &amp; faceting (More details:<a href="http://radar.oreilly.com/2009/10/whitehouse-switch-drupal-opensource.html"><span style="color: #000099;"><span style="text-decoration: underline;">1</span></span></a>,<a href="http://personaldemocracy.com/node/15131"><span style="color: #000099;"><span style="text-decoration: underline;">2</span></span></a>)a</li>
<li><a href="http://www.aol.com/"><span style="color: #000099;"><span style="text-decoration: underline;">AOL</span></span></a>is using Solr to power its channels
<ul>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://yellowpages.aol.com/">Yellow</a><a href="http://yellowpages.aol.com/">Pages</a></span></span></li>
<li><a href="http://music.aol.com/"><span style="color: #000099;"><span style="text-decoration: underline;">Music</span></span></a></li>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://sports.aol.com/nfl">NFL</a><a href="http://sports.aol.com/nfl">Sports</a></span></span></li>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://recipe.aol.com/recipe/browse">AOL</a><a href="http://recipe.aol.com/recipe/browse">Recipes</a></span></span></li>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://plus.aol.com/">Reference</a><a href="http://plus.aol.com/">Center</a></span></span></li>
<li>etc.</li>
</ul>
</li>
<li><a href="http://digg.com/"><span style="color: #000099;"><span style="text-decoration: underline;">digg</span></span></a> uses Solr for search</li>
<li><span style="color: #000099;"><span style="text-decoration: underline;"><a href="http://pds.jpl.nasa.gov/tools/data-search/">NASA</a><a href="http://pds.jpl.nasa.gov/tools/data-search/">Planetary</a><a href="http://pds.jpl.nasa.gov/tools/data-search/">Data</a><a href="http://pds.jpl.nasa.gov/tools/data-search/">System</a><a href="http://pds.jpl.nasa.gov/tools/data-search/"> (</a><a href="http://pds.jpl.nasa.gov/tools/data-search/">PDS</a><a href="http://pds.jpl.nasa.gov/tools/data-search/">)</a></span></span> uses Solr to search for dataset, mission, instrument, target, and host information</li>
<li><a href="http://reddit.com/"><span style="color: #000099;"><span style="text-decoration: underline;">reddit</span></span></a> uses Solr for search</li>
<li>And many more (http://wiki.apache.org/solr/PublicServers)</li>
</ul>
<div id="sdfootnote1" style="font-size: 10px;">
<ol>
<li><span style="color: #808080;">This is not always the case, some of the latest engines implement incremental indexing (or some other strategy) in order to solve this problem.</span></li>
<li><span style="color: #808080;">Words that carry too little meaning or are too common to be of use during the search process.</span></li>
<li><span style="color: #808080;">The process of relating words that are written different but have the same stem, allowing for cases like “drive” being equal to “drove” or “driven”.</span></li>
</ol>
</div>
<address>Stay tunned for part II, where we&#8217;ll actually match them against each other&#8230;.</address>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/alternatives-to-full-text-queries-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We ate some burgers on Programmer Day</title>
		<link>http://blog.moove-it.com/we-ate-some-burgers-on-programmer-day/</link>
		<comments>http://blog.moove-it.com/we-ate-some-burgers-on-programmer-day/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 16:53:34 +0000</pubDate>
		<dc:creator>Martin Cabrera</dc:creator>
				<category><![CDATA[moove-it]]></category>
		<category><![CDATA[burguers]]></category>
		<category><![CDATA[programmer day]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=826</guid>
		<description><![CDATA[We share some pictures &#8230;]]></description>
			<content:encoded><![CDATA[<p>We share some pictures &#8230;</p>
<table>
<tbody>
<tr>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/09/DSC_0047.chica_.jpg" rel="lightbox[826]" title="DSC_0047.chica"><img class="alignleft size-medium wp-image-833" title="DSC_0047.chica" src="http://blog.moove-it.com/wp-content/uploads/2011/09/DSC_0047.chica_-300x200.jpg" alt="" width="300" height="200" /></a></td>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/09/DSC_0048.chica_.jpg" rel="lightbox[826]" title="DSC_0048.chica"><img class="alignleft size-medium wp-image-832" title="DSC_0048.chica" src="http://blog.moove-it.com/wp-content/uploads/2011/09/DSC_0048.chica_-300x200.jpg" alt="" width="300" height="200" /></a></td>
</tr>
<tr>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2011/09/DSC_0042.chica_.jpg" rel="lightbox[826]" title="DSC_0042.chica"><img class="alignleft size-medium wp-image-831" title="DSC_0042.chica" src="http://blog.moove-it.com/wp-content/uploads/2011/09/DSC_0042.chica_-300x200.jpg" alt="" width="300" height="200" /></a></td>
<td>
<a href="http://blog.moove-it.com/wp-content/uploads/2011/09/DSC_0057.chica_.jpg" rel="lightbox[826]" title="DSC_0057.chica"><img src="http://blog.moove-it.com/wp-content/uploads/2011/09/DSC_0057.chica_-300x200.jpg" alt="" title="DSC_0057.chica" width="300" height="200" class="alignleft size-medium wp-image-836" /></a>
</td>
</tr>
</tbody>
</table>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/we-ate-some-burgers-on-programmer-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>If you are going to San Francisco…Be sure to wear Moove-IT shirt…</title>
		<link>http://blog.moove-it.com/if-you-are-going-to-san-francisco%e2%80%a6be-sure-to-wear-moove-it-shirt%e2%80%a6/</link>
		<comments>http://blog.moove-it.com/if-you-are-going-to-san-francisco%e2%80%a6be-sure-to-wear-moove-it-shirt%e2%80%a6/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 19:58:32 +0000</pubDate>
		<dc:creator>Gabriela Isnardi</dc:creator>
				<category><![CDATA[moove-it]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[inigral]]></category>
		<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[palo alto]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[sillicon valley]]></category>
		<category><![CDATA[south america]]></category>
		<category><![CDATA[staton]]></category>
		<category><![CDATA[uruguay]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=793</guid>
		<description><![CDATA[We have been to the top 10 places to visit in the US. From a business perspective, Silicon Valley is the place to go. We share the same passion as the area of the world’s largest technology corporations and high-tech firms: Great Ruby on Rails design &#38; development work. Outsourcing has never been so much [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">We have been to the top 10 places to visit in the US. From a business perspective, Silicon Valley is the place to go. We share the same passion as the area of the world’s largest technology corporations and high-tech firms: Great Ruby on Rails design &amp; development work. Outsourcing has never been so much fun here in Uruguay. And now our <em>Schools</em> <em>friends</em> are wearing Moove-IT shirts, so we are virtually present—though also planning to re- meet in the flesh soon&#8230;</p>
<div id="attachment_815" class="wp-caption aligncenter" style="width: 665px"><a href="http://blog.moove-it.com/wp-content/uploads/2011/08/front11.jpg" rel="lightbox[793]" title="Back Camera"><img class="size-large wp-image-815 " title="Back Camera" src="http://blog.moove-it.com/wp-content/uploads/2011/08/front11-1024x764.jpg" alt="" width="655" height="489" /></a><p class="wp-caption-text">Thanks to Howard Kao, Lane Lillquist, Michael Staton, Nick Punt, and Daniel Jabbour from Inigral!</p></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="attachment_816" class="wp-caption aligncenter" style="width: 665px"><a href="http://blog.moove-it.com/wp-content/uploads/2011/08/back1.jpg" rel="lightbox[793]" title="Back Camera"><img class="size-large wp-image-816 " title="Back Camera" src="http://blog.moove-it.com/wp-content/uploads/2011/08/back1-1024x764.jpg" alt="" width="655" height="489" /></a><p class="wp-caption-text">From South America with love, working offshore</p></div>
<p>&nbsp;</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/if-you-are-going-to-san-francisco%e2%80%a6be-sure-to-wear-moove-it-shirt%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

