Google hledání na Vašich stánkách
Jak jste si asi stačili všimnout, pod každým článkem mám nově nejen relevantní odkazy z mého webu (dělá se to jednoduše fulltextovým prohledáváním celé databáze s vypsáním odkazů na podobné články za pomoci SELECT ... LIKE %), ale taky zobrazuji top 8 výsledků Google hledání pro daný článek. Google zavedl otevřené API, na které je možné se napojit a začlenit tak hledací engine i do Vašich stánek.
Celý engine je založen na protokolu SOAP, což není nic jiného než XML interface. Dietrich Ayala napsal pro SOAP GNU knihovnu v PHP, která se velice snadno používá a umožňuje napojit se na Google API v PHP s pár řádky kódu.
Nejdříve je ale se nutno zaregistrovat na Google, touto registrací je Vám vytvořen účet a přidělen klíč, který je nutné s každým dotazem na vyhledávání zasílat. Důvodem je fakt, že Google umožní zdarma provést maximálně 1.000 dotazů denně, což není tak mnoho. Kvůli tomu je taky nutné výsledky hledání ukládat do databáze a zobrazovat je pod každým článkem z cache, jinak by byl limit hledání velice brzo vyčerpán.
Google API je dobře popsané v API reference a jsou dostupné rovněž podrobné návody, příklady a FAQ.
Vlastní zasílání parametrů hledání je v kódováno ve znakové sadě UTF-8, neběží-li tedy Váš web v UTF-8, je nutné provádět konverzi mezi kódovými stránkami, to zajišťuje knihovna iconv, která je ovšem ve standardní instalaci PHP nepovolena, je nutné tento modul v php.ini explicitně povolit a navíc nakopírovat do adresáře %WIN%/SYSTEM32 soubor iconv.dll (instalace na Windows). Celý proces hledání je pak velice triviální, spočívá ve vytvoření instance soap klienta a zavolání funkce doGoogleSearch. Návratem je jednoduchý XML soubor.
Příklad je tady:
To je celé! Pak už jen stačí doplnit kód pro ukládání do databáze a pro zobrazení dat, která jsou již v cache...
Doplnění: to klíčové slovo pro hledání na Google jsem musel doplnit o '-hulan.info', tedy vyjmout z hledání svoji vlastní doménu, jinak u většiny článků byla většina odpovědí na dotazy... můj vlastní web. ;)
Jako řetězec pro hledání zadáváš titulek příspěvku?
Ahoj, jak je vidět zrovna tady, tak to není titulek, třeba tady se hledá 'Google API', u každého článku mám možnost zadat lokální a Google klíčová slova, je na to nová tabulka, když to neudělám, tak tam jde právě nadpis článku, očištěnej o tečky, apostrofy, a tak... Syntaxe je stejná jako u hledání na Google...
Dobrý den, děkuji za váš článek o hledání na vlastních stránkách pomocí googlu, jste jediní, kteří se tím zabývali, nikoho jiného jsem bohužel nenašel. přitom, je to velmi zajímavé řešení, která dává vhodnou alternativu k parazitnímu formuláři, který nabízí pouze přesměrování s parametry na další stránku. Původně jsem to měl vyřešeno iframem, ale to se mi nelíbilo, potom mě napadlo řešení include http://www.google.co, to jde, ale nejedou mi parametry. Pomocí api je dobré, že výsledky jsou přímo na mých stránkách, bohužel se mi nepodařilo rozjet překódování z utf, strávil jsem nad tím celý den, použil jem i iconv() nebo různé knihovny czech např. http://www.webdot.cz/autocz... ale pořád mi to na výraz železnice hledá eleznice a různé blbosti. Nevím v čem je chyba, hostuji na servery.cz, prosím o radu, jak bych to mohl vyřešit. Stránky mám v iso, v článku píšete, že je nutno povolit knihovnu iconv v php a nahrát ji na server, máte tím na mysli i nahrání na wem, nebo jen na localhstu? Předem děkuji za odpověď. Bohužel s angličtinou si nepokecám:D , tak referencím moc nerozumím.
Pavel
Ještě jednu věc, nedal by se nějak obejít limit pro zobrazení pouze 10 odkazů, např. načtením do databáze, nebo souboru, pak vygenerovat zbytek a vypsat to naráz?
Dík
Pavel
Ahoj Pavle,
mě knihovna iconv normálně funguje, ale pokud s tím máte problém, doporučuji stáhnout si od Martina Malého knihovnu utfconv.php (je v balíku RSS na http://www.maly.cz/finalrss/ ). A použít funkci iso2utf a poté utf2iso, není potřeba povolovat iconv, a ani hosting ji nemusí podporovat..
jinak ukládání výsledků do databáze je nutné, je možné udělat jen 1000 dotazů (s 10 výsledky) denně. A to vyhledání 11 a další pozice se dělá jednoduše, pouze se položka "start" v poli nastaví místo nuly na 10, 20, atd.
Hodně zdaru v implementaci :)
[ad 3] doplnění - těch výsledků je sice max 1000, ale nic člověku nebrání aby se zaregistroval, s jiným emailem, třeba 10x, získal 10 google klíčů, a pak může denně, pokud si to aplikačně ošetří, těch dotazů udělat 10.000, což je 100.000 výsledků ;)
Dík moc za rady, zkusím to. :D
[7] Nakonec jsem musel háčky převést na text bez interpunkce, hledání na googlu je sice trochu zkreslené, ale hází to také žádané výsledky viz. http://www.stopa.cz
Nicméně slyšel jsem, že je to řešení jen pro nekomerční weby :)
Zatím díky za rady a hodně zdaru
Pavel