Premier à s'être lancé dans la mise en place
d'une API permettant à tout un chacun d'accéder à
sa base de données comme bon lui semble (et ce, bien avant
qu'Amazon ne se lance dans l'affaire, voir notre article "Introduction
à l'API Amazon avec PHP"), Google a dès le
début offert un accès complet (bien que limité
à 1000 requêtes par jour et par numéro de licence)
et facilité son utilisation par un
SDK bien conçu (bien que sans fichier d'explication pour
PHP).
L'API Google
fonctionnant avec des requêtes SOAP, nous allons ici faire
appel à la bibliothèque NuSOAP
de Dietrich Ayala, qui offre l'avantage d'autoriser un accés
aux fonctions SOAP aux développeurs qui n'ont pas l'usage
de PEAR sur leur système. Cela nous permet d'entrer directement
dans le vif du sujet...
Notons qu'avant de pouvoir faire quoi que ce soit, il vous faudra
une clé Google, que vous pouvez obtenir
gratuitement ici. Comme précisé, elle ne vous
donne droit qu'à 1000 requêtes par jour, au-delà
desquelles il vous faudra patienter jusqu'au lendemain.
Moteur
de recherche
Nous pouvons donc directement concevoir un moteur de recherche très
performant (car utilisant la technologie Google), tout en restant
dans l'interface que l'on a conçue pour son propre site.
Voici un exemple de base, qui vous donne les principale fonctions
offertes par l'API:
(fichier googlesearch.php)
<html>
<body>
<?php
if (!isset($recherche) || $recherche=="")
{
?>
<form method="post" action="<?=$PHP_SELF ?>">
Entrez
vos mots-clés:<br>
<input
type="text" name="recherche">
<input
type="submit" name="Submit" value="Envoyer">
</form>
<?php
}
else
{
?>
<form method="post" action="<?=$PHP_SELF ?>">
Entrez
vos mots-clés:<br>
<input
type="text" name="recherche" value="<?=$recherche;?>">
<input
type="submit" name="Submit" value="Envoyer">
</form>
<?php
include("nusoap.php");
$soapclient
= new soapclient("http://api.google.com/search/beta2");
$params
= array(
'key'
=> 'VOTRE-CLE-GOOGLE',
'q'
=> $recherche,
'start'
=> 0,
'maxResults'
=> 10,
'filter'
=> true,
'restrict'
=> '',
'safeSearch'
=> true,
'lr'
=> 'lang_en|lang_fr',
'ie'
=> '', 'oe' => ''
);
$result = $soapclient->call("doGoogleSearch", $params, "urn:GoogleSearch",
"urn:GoogleSearch");
if
($result['faultstring'])
{
?>Erreur:
<?=$result['faultstring'];?><?
}
elseif
($result['estimatedTotalResultsCount'] == 0)
{
?>Votre
recherche n'a pas donné de résultat.<?
}
else
{
?><hr>
Votre
recherche sur <b><?=utf8_decode($result['searchQuery']);?></b>
a renvoyé environ <?=$result['estimatedTotalResultsCount']?>
résultats.<br>
<?
if
(is_array($result['resultElements']))
{
foreach
($result['resultElements'] as $r)
{
?>
<p><a href="<?=$r['URL'];?>"><?=utf8_decode($r['title']);?></a>
<br><?=utf8_decode($r['snippet']);?> (<?=$r['cachedSize'];?>)<p>
<?
}
}
}
}
?>
</body>
</html>
Vu leur longueur, nous vous fournissons les codes sources dans
un fichier zippé.
L'explication de ce que nous venons de faire se trouve page
suivante...
Page 1 | 2
| 3
|