Programmazione
Asp
Asp.NET
Java
Javascript
Php
Oracle

Svaghi
Ascolta Radio
Faccine
Libri
Links

Varie
Cerca nel sito...
Segnalazioni
Scrivimi


Motore di ricerca con api google

Oramai tramite l'utilizo dei webservices è possibile sviluppare applicazioni sempre più complese, in questo caso utilizzeremo i web serices di google per costruire un nostro motore di ricerca che visualizzi i risultati tramite la ricerca su google.
Per poter utilizzare tale funzionalità in questo esempio ci occorre utilizzare le classi PHP NuSoap (scaricabili gratuitamente qui), inoltre potete consultare anche le faq di google per poter accedere al suo servizio (faq google).
Innanzitutto per cominciare occorre ottenere dal Google un'apposita chiave di registrazione, ottenibile tramite le apposite pagine di registrazione.

Nelle API di Google sono state previste solo tre metodi, che però risultano completamente sufficienti per le necessità di realizzare delle ricerche,i metodi disponibili sono i seguenti:

- doGogleSearch() : ricerca un specifico termine in google.
- doGetCachedPage() : ritorna una pagina cachata da google.
- doSpellingSuggestion() : ritorna un suggerimento da google.

Di seguito trovate il codice (opportunamente commentato nei punti chiave) per poter realizzare un motore di ricerca utilizzando le API di google:

<html>
<head><basefont face="Verdana" size="2"></head>
<body>
<?php
if (!$_POST['queryStr']) {
        ?>
         <h2>MyGoogle Search Engine</h2>
         <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
         Type search term: <input type="text" name="queryStr">
         </form>
<?
}else{
         // includi le classi NuSOAP
         include("nusoap.php");

        // crea una instanza dell'oggetto soapclient
        $soapclient = new soapclient("http://api.google.com/search/beta2");

        // togli commento alla prox linea per vedere i messaggi di debug
        // $soapclient->debug_flag = 1;

        // prepara un array x i parametri che devono essere passati alla procedura remota
        // doGoogleSearch()
        $params =
                array('Googlekey' => 'codiceLicezaGoogle', // licenza di Google
                // chiave
                'queryStr' => $_POST['queryStr'], // ricerca x termine inserito
                'startFrom' => 0, // fai partire risultai da n
                'maxResults' => 10, // mostra 10 risultati alla volta
                'filter' => true, // rimuovi risultati similari
                'restrict' => '', // restringi ricerca tramite il topic
                'adultContent' => true, // togli dai risultati i link x adulti
                'language' => '', // ricerca x linguaggio
                'iencoding' => '', // input encoding
                'oencoding' => '' // output encoding
        );

        // invia il metodo sul server Gogle.
        //Il metodo call() accetta 4 argomenti(nome della procedura remota da richiamare,array degli argomenti,namespace,azione soap)
        $MyResult = $soapclient->call("doGoogleSearch", $params, "urn:GoogleSearch", "urn:GoogleSearch");

        //togli commento alla prox linea se vuoi renderti conto di come appare la richiesta soap
        // echo '<xmp>'.$soapclient->request.'</xmp>';

        //togli commento alla prox linea se vuoi renderti conto di come appare la risposta soap
        // echo '<xmp>'.$soapclient->response.'</xmp>';

        // stampa a video il risultato della ricerca
        if ($MyResult['faultstring']) {
                ?>
                <h2>Error Report</h2>
                <? echo $MyResult['faultstring'];?>
                <?
        }else{
        ?>
                <h2>MyGoogle Search Results</h2>
                Your search for <b><?=$MyResult['searchQuery']?></b> produced <?=$MyResult['estimatedTotalResultsCount']?> hits.
                 <br>

                <? $i=1;
                if (is_array($MyResult['resultElements'])){
                        echo "<table border=0 cellspacing=2 cellpadding=2>";
                        foreach ($MyResult['resultElements'] as $r){
                                echo "<tr><td>[$i] <a href=" . $r['URL'] . ">" . $r['title'] . "</a>";
                                echo $r['snippet'] . "(" . $r['cachedSize'] . ")</td></tr>";
                                $i++;
                        }
                }
                $i=1;
                ?>
                </table>
                <?
        }
}
?>
</body>
</html>