<?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>Miximum &#187; google</title>
	<atom:link href="http://www.miximum.fr/tag/google/feed" rel="self" type="application/rss+xml" />
	<link>http://www.miximum.fr</link>
	<description>Le blog d&#039;un ingénieur web freelance</description>
	<lastBuildDate>Wed, 16 Nov 2011 16:25:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Quel moteur de recherche pour votre site ?</title>
		<link>http://www.miximum.fr/methodes-et-outils/322-quel-moteur-de-recherche-pour-votre-site</link>
		<comments>http://www.miximum.fr/methodes-et-outils/322-quel-moteur-de-recherche-pour-votre-site#comments</comments>
		<pubDate>Fri, 28 Aug 2009 14:36:07 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Méthodes et outils]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[lucène]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/?p=322</guid>
		<description><![CDATA[photo credit&#160;: Kaptain Kobold Il est loin le temps ou les internautes, en arrivant sur un site, parcouraient patiemment les divers menu jusqu&#8217;&#224; trouver le contenu qui les int&#233;resse. Qui proc&#232;de encore comme &#231;a aujourd&#8217;hui&#160;? On s&#8217;imagine mal naviguer dans une arborescence pour trouver un article sur des sites comme wikipedia ou ebay. L&#8217;usage, de [...]]]></description>
			<content:encoded><![CDATA[<div class="postimg alignleft"><a href="http://www.flickr.com/photos/95492938@N00/83359336/" title="It's Murder, Watson!" target="_blank"><img src="http://farm1.static.flickr.com/42/83359336_7170ce67a1_m.jpg" alt="It's Murder, Watson!" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" title="Attribution-NonCommercial-ShareAlike License" target="_blank"><img src="http://www.miximum.fr/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit&nbsp;: <a href="http://www.flickr.com/photos/95492938@N00/83359336/" title="Kaptain Kobold" target="_blank">Kaptain Kobold</a></small></div>
<p>Il est loin le temps ou les internautes, en arrivant sur un site, parcouraient patiemment les divers menu jusqu&#8217;&agrave; trouver le contenu qui les int&eacute;resse. Qui proc&egrave;de encore comme &ccedil;a aujourd&#8217;hui<span class="fine">&nbsp;</span>? On s&#8217;imagine mal naviguer dans une arborescence pour trouver un article sur des sites comme wikipedia ou ebay. L&#8217;usage, de nos jours, est &agrave; la rapidit&eacute;, que dis-je, &agrave; l&#8217;imm&eacute;diatet&eacute;&nbsp;: une petite recherche et hop<span class="fine">&nbsp;</span>! Le contenu d&eacute;sir&eacute; nous tombe tout cru dans le bec.</p>
<p>D&#8217;o&ugrave; l&#8217;importance cruciale du moteur du recherche, sans lequel un site digne de ce nom ne peut se pr&eacute;tendre utilisable. Et qui dit moteur de recherche, dit prise de t&ecirc;te pour les SI, car les solutions sont nombreuses et h&eacute;t&eacute;rog&egrave;nes. Je vous propose donc un petit tour d&#8217;horizon de quelques technologies destin&eacute;es &agrave; int&eacute;grer des moteurs de recherches sur vos sites.</p>
<h2>Google Search</h2>
<p>Bon, commen&ccedil;ons par la solution b&ecirc;te et m&eacute;chante. Tout le monde connait Google<span class="fine">&nbsp;</span>? Et bien Google fournit la possibilit&eacute; d&#8217;int&eacute;grer son fameux moteur de recherche sur (presque) n&#8217;importe quel site. On copie-colle un petit bout de code sur sa page, et hop<span class="fine">&nbsp;</span>!</p>
<p>L&#8217;avantage<span class="fine">&nbsp;</span>? C&#8217;est la solution la plus simple. Vous n&#8217;avez &agrave; vous occuper de rien. Les inconv&eacute;niants<span class="fine">&nbsp;</span>? Ils sont nombreux<span class="fine">&nbsp;</span>! Vous n&#8217;avez aucun contr&ocirc;le sur les retours, une emprise limit&eacute;e sur la mise en page des r&eacute;sultats, et puis, vous n&#8217;avez bien entendu aucun moyen de contr&ocirc;ler l&#8217;indexation du site. &Agrave; r&eacute;server aux &laquo;&nbsp;sites persos&nbsp;&raquo; des webmasters fain&eacute;ants ou press&eacute;s.</p>
<h2>Recherche full text MySQL</h2>
<p>Retour aux fondamentaux. La plupart des SGBD majeurs fournissent des <a href="http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html">index pour la recherche full text</a>, c&#8217;est &agrave; dire qu&#8217;il est possible, via une requ&ecirc;te sp&eacute;cifique, d&#8217;effectuer une recherche dans un ensemble de champs de types textes.</p>

<div class="wp_syntax"><div class="code"><pre class="mysql" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><a href="http://search.mysql.com/search?site=refman-51&amp;q=SELECT&amp;lr=lang_en"><span class="kw1">SELECT</span></a> <span class="sy1">*</span> <a href="http://search.mysql.com/search?site=refman-51&amp;q=FROM&amp;lr=lang_en"><span class="kw1">FROM</span></a> products
    <span class="sy1">-&gt;</span> <a href="http://search.mysql.com/search?site=refman-51&amp;q=WHERE&amp;lr=lang_en"><span class="kw1">WHERE</span></a> <a href="http://search.mysql.com/search?site=refman-51&amp;q=MATCH&amp;lr=lang_en"><span class="kw1">MATCH</span></a> <span class="br0">&#40;</span>title<span class="sy2">,</span>description<span class="br0">&#41;</span> AGAINST <span class="br0">&#40;</span><span class="st0">'open moko'</span><span class="br0">&#41;</span><span class="sy2">;</span></pre></div></div>

<p>Avantage&nbsp;: la solution est pratique, lorsque le besoin est simple et tr&egrave;s sp&eacute;cifique. En revanche, il faudra mettre les mains dans le camboui, et la solution peut devenir difficile &agrave; mettre en &oelig;uvre et maintenir lorsque le besoin est un peu plus complexe. Et puis, selon la volum&eacute;trie, les perfs ne sont pas au top. Au final, les possibilit&eacute;s restent un peu limit&eacute;es.</p>
<h2>Doctrine Search Behavior</h2>
<p>Je mentionne la solution qui me semble injustement peu connue. L&#8217;ORM Doctrine, embarqu&eacute; avec <a href="http://www.miximum.fr/tag/symfony">symfony</a>, <a href="http://www.doctrine-project.org/documentation/manual/1_1/en/searching">propose un <i>behavior</i> qui permet de g&eacute;n&eacute;rer automatiquement un index full text</a>.</p>
<p>Une solution pratique et rapide pour g&eacute;rer un moteur de recherche sur des sites batis avec ce framework.</p>

<div class="wp_syntax"><div class="code"><pre class="yml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"># schema.yml
&nbsp;
Product:
  actAs:
    Searchable:
      fields: [title, description]
# ...</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="re0">$products</span> <span class="sy0">=</span> Doctrine<span class="sy0">::</span><span class="me2">getTable</span><span class="br0">&#40;</span><span class="st_h">'product'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">search</span><span class="br0">&#40;</span><span class="st_h">'clavier pour blonde'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>

<p>C&#8217;est facile, c&#8217;est rapide, que demande le peuple<span class="fine">&nbsp;</span>?</p>
<h2>MNoGoSearch</h2>
<p><a href="http://www.mnogosearch.org/">mnoGoSearch</a> est un moteur de recherche &eacute;crit en C et compos&eacute; de deux parties&nbsp;: d&#8217;une part, un crawler (indexeur) capable de naviguer sur des pages html ou en texte pur, et une interface de requ&ecirc;te pour effectuer les recherches.</p>
<p>MnogoSearch fonctionne &laquo;&nbsp;&agrave; la Google&nbsp;&raquo;, le robot explore r&eacute;guli&egrave;rement votre contenu, et construit son index ainsi. L&#8217;avantage, c&#8217;est que vous d&eacute;tenez la main sur la configuration de l&#8217;indexeur. MnogoSearch est capable d&#8217;indexer des sites en plusieurs langues, des groupes de sites, supporte plusieurs bases de donn&eacute;es, et il vous sera possible d&#8217;effectuer vos requ&ecirc;tes via des fonctions PHP.</p>
<p>En bref, MnogoSearch est parfait si vous souhaitez mettre en place un moteur de recherche basique sur vos pages de contenu, tout en contr&ocirc;lant la teneur de votre index.</p>
<h2>Sphinx</h2>
<div class="postimg alignright"><a href="http://www.flickr.com/photos/17513020@N00/362900750/" title="Paraguayensis Kandinsky Detectivicus" target="_blank"><img src="http://farm1.static.flickr.com/100/362900750_5369302dde_m.jpg" alt="Paraguayensis Kandinsky Detectivicus" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" title="Attribution-NonCommercial-ShareAlike License" target="_blank"><img src="http://www.miximum.fr/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit&nbsp;: <a href="http://www.flickr.com/photos/17513020@N00/362900750/" title="julianrod" target="_blank">julianrod</a></small></div>
<p><a href="http://www.sphinxsearch.com/about.html">Sphinx est un autre moteur de recherche full text</a>, &eacute;crit en C++. Sa particularit&eacute;<span class="fine">&nbsp;</span>? Sphinx a &eacute;t&eacute; sp&eacute;cialement con&ccedil;u avec la performances &agrave; l&#8217;esprit. Si l&#8217;on en croit les benchmarks (j&#8217;avoue ne jamais l&#8217;avoir test&eacute; en personne), il poutre tout simplement les performances d&#8217;une recherche full text basique de mysql, et l&#8217;enl&egrave;ve honorablement sur mnogosearch.</p>
<p>Sphinx est donc capable d&#8217;indexer une &eacute;norme quantit&eacute; de documents (plusieurs gigas) &agrave; une grande rapidit&eacute;, et d&#8217;effectuer des recherches en un temps record. Il est capable d&#8217;indexer des donn&eacute;es provenant de plusieurs sources (c&#8217;est &agrave; dire, ce n&#8217;est pas qu&#8217;un crawler de pages web), et fournit des apis dans la plupart des langages majeurs.</p>
<p>Il est de plus relativement facile &agrave; mettre en place, ce qui en fait un bon choix de moteur de recherche. D&#8217;ailleurs, Sphinx est utilis&eacute; par des gros projets, tels que thepiratebay, mininova, craigslist, ou dailymotion.</p>
<h2>Luc&egrave;ne / Solr</h2>
<p>Alors l&agrave;, c&#8217;est la Rolls-Royce des moteurs de recherche. Luc&egrave;ne / Solr, &eacute;crit en Java, est sans doute le moteur de recherche libre le plus puissant du moment, fournissant toutes les fonctionnalit&eacute;s dont vous aviez r&ecirc;v&eacute; (requ&ecirc;tes bool&eacute;ennes, recherche par facette, r&eacute;plication, recherche distribu&eacute;e, etc.).</p>
<p>Pour &ecirc;tre exact, Luc&egrave;ne est la biblioth&egrave;que d&#8217;indexation et de r&eacute;cup&eacute;ration de donn&eacute;es. Solr, qui encapsule Luc&egrave;ne, est un moteur de recherche complet qui fournit une interface sous forme d&#8217;API XML / JSON.</p>
<p>Si vous souhaitez avoir une id&eacute;e de la mani&egrave;re dont on installe, configure et utilise Solr, je vous laisse consulter mon <a href="http://www.miximum.fr/tutos/192-integrer-solr-a-symfony">tutoriel sur l&#8217;int&eacute;gration de Solr &agrave; Symfony</a>.</p>
<p>Dans la plupart des cas, si votre besoin pr&eacute;sente un minimum de complexit&eacute;, Solr est la technologie &agrave; employer. L&#8217;inconv&eacute;niant<span class="fine">&nbsp;</span>? La configuration de la b&ecirc;te requiert certaines comp&eacute;tences, et les ressources n&eacute;cessaires &agrave; faire tourner le servlet java ne sont pas n&eacute;gligeables. Solr / Luc&egrave;ne reste, dans tous les cas, une excellente solution de moteur de recherche.</p>
<h2>Zend Luc&egrave;ne</h2>
<div class="postimg alignleft"><a href="http://www.flickr.com/photos/21943179@N06/3145066465/" title="el buscador" target="_blank"><img src="http://farm4.static.flickr.com/3295/3145066465_d8abbcbacb_m.jpg" alt="el buscador" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" title="Attribution-NonCommercial-ShareAlike License" target="_blank"><img src="http://www.miximum.fr/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit&nbsp;: <a href="http://www.flickr.com/photos/21943179@N06/3145066465/" title="Ignacio Conejo" target="_blank">Ignacio Conejo</a></small></div>
<p>Pour terminer notre tour d&#8217;horizon, j&#8217;aimerais introduire pour ceux qui ne connaissent pas le projet <a href="http://framework.zend.com/manual/fr/zend.search.lucene.html">Zend Luc&egrave;ne</a>. Zend Luc&egrave;ne, qui fait partie du Zend Framework, est une r&eacute;impl&eacute;mentation de Luc&egrave;ne en php. Le moteur de recherche fonctionne via une api php, et l&#8217;index g&eacute;n&eacute;r&eacute; est compatible avec Solr.</p>
<p>Cette solution est d&#8217;une extr&egrave;me simplicit&eacute;, il devient possible de mettre en place un moteur de recherche <i>full php</i> puissant avec une simplicit&eacute; et une rapidit&eacute; d&eacute;concertante. La documentation de Symfony fournit d&#8217;ailleurs <a href="http://www.symfony-project.org/jobeet/1_2/Doctrine/en/17">un exemple d&#8217;impl&eacute;mentation</a>.</p>
<p>En revanche, <a href="http://groups.google.com/group/symfony-users/browse_thread/thread/9c3a002438db9c0">les performances ne sont pas au rendez-vous</a>, et si le nombre d&#8217;objets index&eacute;s devient trop important (plusieurs dizaines de milliers), Zend Luc&egrave;ne deviendra vite inutilisable. &Agrave; r&eacute;server pour les besoins sp&eacute;cifiques, mais &agrave; la volum&eacute;trie limit&eacute;e.</p>
<h2>Conclusions</h2>
<p>J&#8217;esp&egrave;re que ce petit tour d&#8217;horizon, volontairement synth&eacute;tique, vous aura pr&eacute;sent&eacute; quelques informations utiles. Il reste tr&egrave;s incomplet, j&#8217;ai omis certaines technos qui me paraissaient peu fiables ou plus mises &agrave; jour, ou tout simplement parce que je ne les connais pas. Je me suis &eacute;galement limit&eacute; aux technologies libres.</p>
<p>Et vous, vous utilisez quoi pour votre moteur de recherche<span class="fine">&nbsp;</span>?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/methodes-et-outils/322-quel-moteur-de-recherche-pour-votre-site/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Google prépare un concurrent à Symfony</title>
		<link>http://www.miximum.fr/culture/170-google-prepare-un-concurrent-a-symfony</link>
		<comments>http://www.miximum.fr/culture/170-google-prepare-un-concurrent-a-symfony#comments</comments>
		<pubDate>Wed, 01 Apr 2009 08:44:45 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Culture informatique]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/?p=170</guid>
		<description><![CDATA[photo credit&#160;: andercismo Ils ont encore frapp&#233;&#160;! On savait que le g&#233;ant &#233;tait tr&#233;s touche-&#224;-tout, et la liste des services qui portent le logo Google n&#8217;en finit pas de s&#8217;allonger. Apr&#232;s s&#8217;&#234;tre attaqu&#233; au march&#233; des navigateurs, la firme semble sur le point de sortir un nouveau produit&#160;: un framework MVC &#233;crit en PHP, qui [...]]]></description>
			<content:encoded><![CDATA[<div class="postimg alignleft"><a href="http://www.flickr.com/photos/10612940@N00/2349098787/" title="MAGNIFYING GLASS" target="_blank"><img src="http://farm3.static.flickr.com/2363/2349098787_2cd660c18c_m.jpg" alt="MAGNIFYING GLASS" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" title="Attribution-NonCommercial-ShareAlike License" target="_blank"><img src="http://www.miximum.fr/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit&nbsp;: <a href="http://www.flickr.com/photos/10612940@N00/2349098787/" title="andercismo" target="_blank">andercismo</a></small></div>
<p>Ils ont encore frapp&eacute;<span class="fine">&nbsp;</span>! On savait que le g&eacute;ant &eacute;tait tr&eacute;s touche-&agrave;-tout, et la liste des services qui portent le logo Google n&#8217;en finit pas de s&#8217;allonger. <a href="http://www.google.fr/chrome">Apr&egrave;s s&#8217;&ecirc;tre attaqu&eacute; au march&eacute; des navigateurs</a>, la firme semble sur le point de sortir un nouveau produit&nbsp;: un framework MVC &eacute;crit en PHP, qui se positionnerait en concurrent direct de <a href="http://www.symfony-project.org">Symfony</a>.</p>
<p>&Agrave; l&#8217;origine, il semble qu&#8217;aucune annonce officielle n&#8217;ait &eacute;t&eacute; pr&eacute;vue avant quelques semaines, d&eacute;lai n&eacute;cessaire avant l&#8217;obtention d&#8217;une certaine maturit&eacute; du produit. L&#8217;information proviendrait tout b&ecirc;tement d&#8217;une fuite d&#8217;un des employ&eacute;s de Google travaillant sur le projet.</p>
<p>Au moment o&ugrave; j&#8217;&eacute;cris ces lignes, la firme ne semble avoir publi&eacute; aucun communiqu&eacute; officiel sur le sujet, et seul <a href="http://www.mattcutts.com/blog">Matt Cutts</a>, blogueur tr&eacute;s connu pour communiquer r&eacute;guli&egrave;rement autour de Google, <a rel="nofollow" href="http://www.mattcuts.com/blog/is-google-about-to-release-a-web-framework">&eacute;voque le sujet d&#8217;une mani&egrave;re plut&ocirc;t vague et d&eacute;tourn&eacute;e</a>.</p>
<p>Alors que <a href="http://www.symfony-project.org/blog/2009/02/18/dailymotion-powered-by-symfony">Dailymotion, que l&#8217;on ne pr&eacute;sente plus, a choisi de migrer sous Symfony</a>, des rumeurs (je n&#8217;ai retrouv&eacute; aucune source) affirment que Google pr&eacute;pare la migration de Youtube sous son nouveau framework.</p>
<p>M&ecirc;me si le produit ne semble pas pr&ecirc;t &agrave; sortir dans l&#8217;imm&eacute;diat, on peut s&#8217;interroger sur le futur de Symfony, qui pour l&#8217;instant n&#8217;a pas &agrave; affronter de r&eacute;el concurrent s&eacute;rieux. On connait la qualit&eacute; des produits Google en g&eacute;n&eacute;ral, et le g&eacute;ant dispose de moyens de communications assez faramineux.</p>
<p>Quoi qu&#8217;il en soit, si le projet se concr&eacute;tise, ce sera une nouvelle preuve de la volont&eacute; de Google d&#8217;&ecirc;tre pr&eacute;sente dans tous les domaines du web.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/culture/170-google-prepare-un-concurrent-a-symfony/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

