Własna wyszukiwarka z wykorzystaniem Google AJAX Search API



Własna wyszukiwarka z wykorzystaniem Google AJAX Search API

Google AJAX Search API pozwala w prosty sposób na wstawienie wyszukiwarki Googla na swoją stronę www. API zostało skonstruowane w taki sposób, by jego użycie było jak najprostsze, a jednocześnie by użytkownik z niego korzystający miał możliwość wyświetlania wyników w dowolny sposób, czy też wykorzystywać zwrócone wyniki wyszukiwania wedle uznania.

W dzisiejszym artykule przyjrzymy się trochę bardziej podstawowym funkcjom tego API i zbudujemy własny skrypt, gotowy do wstawienia na stronę. Wyniki wyszukiwania będą zgrupowane w kategorie tematyczne, ponadto zostanie przedstawiony sposób modyfikacji wyglądu standardowych wyników wyszukiwania.

Nie zapomnij zapisać się na nasz kanał RSS!

Zobacz DEMO

O Google AJAX Search API słów kilka

Google AJAX Search API udostępnia proste obiekty za pomocą których można przeprowadzić wyszukiwanie za pośrednictwem technologii AJAX. API zapewnia dużą swobodę w wykorzystaniu API, począwszy od możliwości przechwycenia wyników wyszukiwania, poprzez możliwość modyfikacji wyglądu po zdefiniowanie obszarów wyszukiwania.

Korzystając z Google AJAX Search API można przeszukiwać zasoby Googla w wielu obszarach:

  • Web Search
  • Local Search
  • Video Search
  • News Search
  • Blog Search (póki co eksperymentalnie)
  • Image Search
  • Patent Search

Dzięki czemu same wyniki możemy w prosty sposób podzielić na konkretne kategorie.

Pierwsze kroki

Zaczynając pracę z Google AJAX Search API należy w pierwszej kolejności załadować Google AJAX API Loader poprzez:

  1. <script src="http://www.google.com/jsapi" type="text/javascript"></script>

Na dzień dzisiejszy nie jest wymagany klucz do API, jednakże Google zachęca do wygenerowania go i umieszczania jako parametr wywołania API, argumentując, że w przypadku gdyby wykryli jakąś nieprawidłowość w działaniu aplikacji jest to jedyny sposób skontaktowania się z wami. Wybór więc należy do was.

Następnie wybieramy bibliotekę z której chcemy skorzystać:

  1. google.load('search', '1');

W dokumencie przygotowujemy sobie jednocześnie pojemniki w których umieścimy elementy formularza i wyników wyszukiwania.

  1. <div id="pojSearch">
  2.  <h2>Wpisz szukaną frazę:</h2>
  3.  <div id="pojSearchFrom">&nbsp;</div>
  4. </div>

Skrypt wyszukiwarki – wykorzystanie API

Mając już załadowane API przystępujemy do napisania funkcji load(), która zostanie wywołana na zdarzenie onLoad:

  1.  //wywołanie całego mechanizmu na onLoad
  2.       function OnLoad() {
  3.         new load();
  4.       }

Na początek pobierany pojemnik w którym będzie wstawiony formularz i wyniki wyszukiwania:

  1.  //pobranie elementu z DOM do którego zostanie dodany moduł wyszukiwarki
  2.     var boxSearch = document.getElementById("pojSearchFrom");

Dalej tworzymy nowy obiekt wyszukiwarki, ustawiamy wielkość wyników i kategorie w ramach których będziemy wyszukiwać wpisaną frazę:

  1.     // utworzenie formularza wyszukiwarki
  2.     this.mainControl = new google.search.SearchControl();
  3.  
  4.    // ustawienie wielkości pakietu wyników:
  5.    //LARGE_RESULTSET=8 wyników, SMALL_RESULTSET=4 wyniki w jednym oknie
  6.    this.mainControl.setResultSetSize(GSearch.SMALL_RESULTSET);
  7.  
  8.    // ustawienie obszarów wyszukiwania
  9.    // web, obrazy, wideo, newsy, blogi i książki Google
  10.     this.mainControl.addSearcher(new google.search.WebSearch());
  11.     this.mainControl.addSearcher(new google.search.ImageSearch());
  12.     this.mainControl.addSearcher(new google.search.VideoSearch());
  13.     this.mainControl.addSearcher(new google.search.NewsSearch());
  14.     this.mainControl.addSearcher(new google.search.BlogSearch());
  15.     this.mainControl.addSearcher(new google.search.BookSearch());

W następnej kolejności precyzujemy sposób wyświetlania wyników – w tym przypadku będą to taby (do wyboru mamy jeszcze tryb linear). Po dodaniu opcji wyświetlania, „wrysowujemy” za pomocą funkcji draw cały komponent do pobranego wcześniej pojemnika.

  1.    //ustawienie sposobu wyświetlania kategorii na TABY
  2.    var drawOptions = new google.search.DrawOptions();
  3.     drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);
  4.  
  5.     this.mainControl.draw(boxSearch, drawOptions);

Jako ciekawostkę możemy jeszcze doprecyzować tekst jaki ma się wyświetlać w przypadku, gdy nie zostaną znalezione żadne wyniki wyszukiwania.

  1.     //ustawienie tekstu w przypadku, gdy nie znaleziono żadnych wyników wyszukania
  2.     this.mainControl.setNoResultsString("Nie znaleziono wyników spełniających kryteria");

Łącząc wszystko w całość – skrypt wygląda następująco:

  1.  
  2.  //załadowanie Google AJAX Search API z językiem PL
  3.     google.load('search', '1');
  4.  
  5.  // funkcja wywoływana na onLoad inicjująca formularz i mechanizm wyszukiwarki
  6.  function load() {
  7.    
  8.  //pobranie elementu z DOM do którego zostanie dodany moduł wyszukiwarki
  9.     var boxSearch = document.getElementById("pojSearchFrom");
  10.  
  11.     // utworzenie formularza wyszukiwarki
  12.     this.mainControl = new google.search.SearchControl();
  13.  
  14.    // ustawienie wielkości pakietu wyników:
  15.    //LARGE_RESULTSET=8 wyników, SMALL_RESULTSET=4 wyniki w jednym oknie
  16.    this.mainControl.setResultSetSize(GSearch.SMALL_RESULTSET);
  17.  
  18.    // ustawienie obszarów wyszukiwania
  19.    // web, obrazy, wideo, newsy, blogi i książki Google
  20.     this.mainControl.addSearcher(new google.search.WebSearch());
  21.     this.mainControl.addSearcher(new google.search.ImageSearch());
  22.     this.mainControl.addSearcher(new google.search.VideoSearch());
  23.     this.mainControl.addSearcher(new google.search.NewsSearch());
  24.     this.mainControl.addSearcher(new google.search.BlogSearch());
  25.     this.mainControl.addSearcher(new google.search.BookSearch());
  26.  
  27.    //ustawienie sposobu wyświetlania kategorii na TABY
  28.    var drawOptions = new google.search.DrawOptions();
  29.     drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);
  30.  
  31.     //ustawienie tekstu w przypadku, gdy nie znaleziono żadnych wyników wyszukania
  32.     this.mainControl.setNoResultsString("Nie znaleziono wyników spełniających kryteria");
  33.     this.mainControl.draw(boxSearch, drawOptions);
  34.  
  35.   }
  36.  
  37.  
  38.  //wywołanie całego mechanizmu na onLoad
  39.       function OnLoad() {
  40.         new load();
  41.       }

I to wszystko! W ten oto prosty i szybki sposób zbudowaliśmy swoja własną wyszukiwarkę bazującą na wynikach Googla. Pozostaje nam jedynie ostylowanie elementów wyszukiwarki.

Struktura DOM poszczególnych elementów wygląda następująco:

  1. <!– A collection of web search results in the search control –>
  2. <div class="gsc-results gsc-webResult">
  3.  
  4.   <!– A single web result in the search control –>
  5.   <div class="gsc-result gsc-webResult">
  6.  
  7.     <!– A single web result, full structure defined below –>
  8.     <div class="gs-result gs-webResult"></div>
  9.   </div>
  10.   …
  11. </div>
  12.  
  13. <!– Similar pattern for local, blog, etc. –>
  14. <div class="gsc-results gsc-localResult"></div>
  15. <div class="gsc-results gsc-blogResult"></div>

Zobacz DEMO

Tak oto nasz skrypt ożył. W następnym artykule zmodyfikujemy go tak by można było wprowadzić ograniczenie wyszukiwania do konkretnej strony, a ponadto spróbujemy skorzystać z API z poziomu PHP-a, wykorzystując REST API.

Related Posts with Thumbnails
Prześlij dalej:
Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

5 komentarze do “Własna wyszukiwarka z wykorzystaniem Google AJAX Search API”

świetny artykuł i genialne demo! dzieki :)

mam jeszcze pytanie czy jest sposób by nie wyświetlać informacji,
Technologia ?

commenter

Oczywiście, że jest to możliwe ze strony technicznej, ale jednocześnie jest to pogwałcenie „Terms of Use”, więc nie polecam i odsyłam do dokumentacji :)

http://code.google.com/intl/pl/apis/ajaxsearch/terms.html

świetny artykuł dzięki :)

commenter

Czy jest jakieś ograniczenie w korzystaniu z api?

Zostaw komentarz:

Imię (wymagane):
Email:
Strona www:
Komentarz (wymagany):
XHTML: W komentarzach możesz korzystać z nastepujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
-