Wyszukiwanie to wciąż gorący temat wśród zagadnień współczesnej informatyki internetowej. Ilość dostępnych danych oraz ich poziom szczegółowości w tak zwanej „sieci” sprawia, że użytkownik nierzadko napotyka na problem dotarcia do tych najcenniejszych. Jak wybrać to, co najlepsze, jakich środków użyć by zapewnić Mu najlepszy możliwy dostęp do informacji? Oto problemy, przed którymi stawiane są dzisiejsze wyszukiwarki internetowe.

Onet, jako część tego świata informacji również stara się sprostać zapotrzebowaniom użytkownika. Należy pamiętać, że Onet posiada szerokie spektrum informacji dotyczących wielu dziedzin życia, przez co stanowi bogatą skarbnicę wiedzy o świecie i człowieku. Dzięki partnerowi, jakim jest dla nas Google, staramy się zapewniać najwyższa możliwą jakość wyszukiwania zarówno w poszczególnych serwisach jak i całym Internecie. Poprzez usługę szukaj.onet.pl możemy przeszukiwać całą „sieć”, a także znaleźć interpretację onetową dla interesujących nas zagadnień.

Inaczej niż crowler Google, omijamy proces zaciągania i parsowania dokumentów. Mając dostęp do źródła danych zyskujemy możliwościach lepszego zrozumienia i wykorzystania ich zawartości. Dlatego poza wyszukiwaniem oferowanym przez partnera Google postanowiliśmy dostarczyć użytkownikowi bezpośrednie szukanie po treściach Onetu. Dla trafień w punkt wyszukiwań takich, jak na przykład znane osoby, marki samochodów czy też profile najważniejszych spółek został przygotowany mechanizm „boolseye”. Do kart prezentujących wybrane zagadnienia trafiają tylko bogate w treść informacje. Dodatkowo taka bliskość z danymi pozwala na ich natychmiastową dostępność. Średnio po około 60 sekundach pojawiająca się informacja na przykład na serwisie wiadomości jest możliwa do wyszukania.

Dzięki wiedzy o rodzaju informacji jesteśmy ją również w stanie umiejscowić w kontenerach danych takich jak wiadomości, multimedia, artykuły czy też wpisy społeczności forum onetowego.

Co drzemie w jaskini

Konfiguracja sprzętowa, architektura.

Jednym z dodatkowych wymagań stawianych wyszukiwarce portalowej była jej elastyczność. Mnogość serwisów onetowych oraz ich różnorodność wymusiła na nas stworzenie platformy, która potrafi dostosować się do wymogów layoutowych serwisu i pozostaje niezmienna funkcjonalnie. Jest to bardzo istotne by użytkownik postrzegał wyszukiwanie w jednolity sposób. Osiągnięcie dostępnych funkcjonalności, jakie oferuje w tej chwili cała platforma wyszukiwania oczywiście nie byłoby możliwe bez narzędzi, które tak naprawdę ją definiują.

Poniższy diagram przedstawia poglądowo mechanizmy, o jakie oparta została sama platforma.

Serwisy dzięki usłudze RevProxy wykorzystują elementy platformy i umieszczają ją w swojej strukturze katalogów. Osadzając ją umieszczają swoje nagłówki i stopki, przez co strona wyszukiwania pozostaje zgodna z layoutem danego serwisu. Sam kontroler pozostaje po stronie platformy, co powoduje, że zachowanie strony jest obsługiwane poprzez mechanizmy samej platformy.

Ustawienie odpowiednich nagłówków podczas osadzania platformy w niejawny sposób modyfikuje jej ustawienia. Wykorzystujemy to między innymi do filtrowania wyników wewnątrz serwisu ograniczając wyszukiwanie do podanej domeny.

Oprócz tego, że dzięki centralnemu miejscu możemy dokonywać szybkich zmian w obrębie platformy, samo Proxy umożliwia nam wersjonowanie. Jesteśmy w stanie w ten sposób wydać nowy release nie zaburzając pracy serwisom już korzystającym z platformy.

Warstwę aplikacyjną w naszym przypadku stanowią mechanizmy pracujące zarówno z silnikami wyszukiwania jak i punktami dostępowymi do danych. Samo API, które znajduje się wewnątrz tej warstwy zostało zaprojektowane tak, by w dowolnym momencie można było wymieniać źródła danych. Do produkcji API został wykorzystany wewnętrzny pythonowy serwer aplikacyjny oraz Tornado Web Server, głównie używany w mechanizmie „boolseye”.

Warstwę wspiera cache oparty o Membase, wydajny serwer do zarządzania danymi klucz – wartość. Używany przede wszystkim do wsparcia popularnych zapytań jak i mechanizmu wykrywania miejscowości w zapytaniach użytkownika.

To, co najbardziej istotne znajduje się na samym spodzie diagramu: *silniki wyszukiwania*. Na dzień dzisiejszy platforma korzysta oczywiście z danych partnera Google, ale dla wewnętrznego wyszukiwania używa jednych z najbardziej wydajnych OpenSource’owych mechanizmów Lucene (SOLR’a) jak i Sphinx’a. Oba mechanizmy radzą sobie z zawiłościami języka polskiego dzięki słownikowi z projektu Ispell.

Solr pracuje pod Tomcat’em, kontenerem aplikacji webowych, a użycie Sphinx’a wymusiło na nas dobudowanie infrastruktury, która pozwala na automatyzację indeksacji oraz samego procesu zapytań.

Nie należy zapominać o fizycznej warstwie całej usługi. Ona też przyczynia się przecież do stabilności działania całej platformy. Serwowanie danych opiera się o urządzenia wyposażone w szybkie dyski SSD. Dzięki naturze wyszukiwanych informacji, które cechują się niezmiennością, możliwe było zmaksymalizowanie właściwości tego rodzaju dysków.

Boolseye

Akordeon z trafną podpowiedzią

Z uwagi na specyfikę zapytań użytkowników, którzy często szukają bardzo konkretnych informacji powstał mechanizm „boolseye”. Jego zadaniem jest przekierowanie zainteresowanego na najbardziej wartościowe strony.

Do kart tak zwanego akordeonu wpadają tylko wybrane elementy, które niosą za sobą wyspecjalizowane informacje na temat pokazywanego obiektu. Trafiają tam między innymi elementy z pogody, biznesu, muzyki, filmu itp. Karty pokazują się tylko wówczas, gdy zapytanie użytkownika osiąga zbliżony poziom szczegółowości co do znajdowanego obiektu.

Może nie znajdziemy tam informacji na zapytania typu „co dziś w polityce?”, ale już pytanie o konkretne filmy artystów czy na przykład pogodę w miejscowości pozwoli nam w pełni cieszyć się działaniem mechanizmu.

Powyższy skrócony diagram sekwencji pokazuje działanie samego mechanizmu.

Użytkownik wykonując zapytanie zapoczątkowuje dwie sekwencje działań. Jedna to generowanie strony z całą swoją treścią, a więc również zapytania do mechanizmów wyszukiwania partnera Google i naszych wewnętrznych. Druga uruchamiana ścieżka to wyszukanie dopasowań dla „boolseye’a”. Tornado Web Serwer, który jest tu warstwą aplikacyjną asynchronicznie odpytuje „n” elementów, które mają za zadanie przygotować według nich najlepsze możliwe dopasowanie na zadane zapytanie użytkownika. Po otrzymaniu wszystkich odpowiedzi składowane są one pod określonym kluczem w cache (Membase) na czas określony dla typów umieszczanych tam danych. Po zakończeniu generowania strony, poprzez JSONP pobrana zostaje przygotowana wersja akordeonu. Taka architektura pozwala na uniezależnienie podstwowych funkcjonalności patformy wyszukiania w stosunku do naszego „boolseye’a”.

Ciągle dodajemy też nowe obiekty by ułatwić i uprzyjemnić użytkownikowi czas spędzony na wyszukiwaniu. Oto kilka przykładowych zapytań, które odkrywają możliwości „boolseye’a”:

Słów kilka na koniec

Technologia w służbie DramLab’u

Jako, że DreamLab stawia sobie za cel używanie najnowszych technologii w swoich produktach, by dostarczać najbardziej funkcjonalne narzędzia, tak i wyszukiwarka obiera taką ścieżkę rozwoju. Myślę, że każdemu, kto śledzi trendy w informatyce internetowej takie nazwy jak Python, Solr, MemBase, Tornado, Media Queries, RabbitMQ czy SphinxSearch nie są obce. Dziś tak naprawdę technologia jest tym elementem, który toruje drogę do dalszego rozwoju usług internetowych.

Przyrost ilości treści nie ma zamiaru zwolnić, stawiamy więc na dalszy rozwój platformy wyszukiwawczej. Rozwiązania chmurowe, dalsze polepszanie jakości oraz rozwój mechanizmu „boolseye’a” to podstawowe zagadnienia, które pojawiają się na horyzoncie wyszukiwarki może raczej już jej dotyczą. Na pewno podejmiemy wszelkie starania by użytkownik korzystający z naszej platformy wyszukiwawczej uzyskiwał najlepszy i najbardziej wartościowy sposób dostępu do informacji internetowych.

Zachęcamy do odszukania wszystkich rodzajów obiektów na kartach „boolseye’a”. Kto wie, może znajdziecie tam coś, czego jeszcze nikt nie odkrył?

 

Marcin Ciurla

Projektant Systemów Informatycznych