06 / 02 / 2017 Developers

Sphinx – silnik wyszukiwarki SQL

Czym jest Sphinx?

Sphinx jest to silnik wyszukiwań tekstowych SQL. Open sourceowa aplikacja ostała stworzona przez rosyjskich programistów. Rozwijana po dziś dzień. Napisana w C++, działająca na Linux (RedHat, Ubuntu, etc), Windows, MacOS, Solaris, FreeBSD i kilku innych systemach operacyjnych.

Wydajność

Prędkość indeksowania to nawet 10 do 15 MB tekstu na sekundę dla jednego rdzenia. Prędkość wyszukiwania nawet 500 zapytań na sekundę przy 1 mln plików / 12 GB przy 2 rdzeniowym komputerze z 2 GB pamięci RAM. Największa znana instalacja Sphinx toBoardreader.com, indeksująca 16 miliardów dokumentów. Najbardziej obciążona znana instalacja silnika to Craigslist, na której wykonywane jest 300 milionów zapytań dziennie i ponad 50 miliardów wyświetleń w miesiącu.

Narzędzia Sphinxa

  • searchd – daemon wyszukiwarki. Aby wyszukiwanie mogło by możliwe musi być uruchomiony. Przeszukuje indeksy i zwraca wyniki
  • indexer – generator indeksów
  • search – dzięki temu narzędziu możemy testować wyszukiwanie z poziomu CLI
  • indextool – pozwala debugować i wyświetlać informacje o indeksie

Zalety

  • prędkość indeksowania
  • prędkość wyszukiwania
  • duża skalowalność
  • współpraca z różnymi bazami (PostgreSQL, MySQL, MSSQL)
  • API dla różnych języków (np. PHP, Python, Java)
  • obsiada przeszukiwanie pełnotekstowe
  • umożliwia sortowanie, filtrowanie, grupowanie, stronicowanie rezultatów wykorzystując konkretne atrybuty
  • wyszukiwanie nie opiera się na przeszukiwaniu bazy, tylko przygotowanych indeksów

Bieżące zmiany a wyszukiwanie

Ostatnia z wymienionych zalet jest również niestety wadą. Aby wyszukiwanie było bezbłędne, po każdej zmianie w bazie danych konieczne by było tworzenie indeksu na nowo, co niestety jest niemożliwe i wykonuje się go regularnie co kilka godzin/dni w zależności od wielkości indeksu. Sposobem na rozwiązanie tego jest wykorzystanie tzw. indeksu dodatkowego. Główny indeks wyszukuje po 99,9% danych, a dodatkowy 0.1%. Jest on mniejszy więc jego indeksowanie może odbywać się dużo częściej.

Podsumowanie

Sphinx Search Engine jest bardzo dobrym rozwiązaniem do aplikacji z duża ilością danych i dużym ruchem na stronie. Jeżeli posiadamy małą i prostą stronę z niedużą ilością danych, jest to zupełnie zbędne. W następnym artykule postaram się opisać konfiguracje i wykorzystanie silnika w aplikacji stworzonej za pomocą frameworka Symfony.

FacebookTwitterGoogle+LinkedIn