8 Samodzielne, zaawansowane wyszukiwanie 🔍 Oprogramowanie silnika dla Twojego produktu

Dodanie zaawansowanej funkcji wyszukiwania do aplikacji może początkowo wydawać się trudnym zadaniem, lecz w rzeczywistości nie jest ani skomplikowane, ani bardzo czasochłonne. Poniżej przedstawiam kilka sprawdzonych rekomendacji!

W ciągu ostatnich dwóch, trzech dekad wiele innowacji technologicznych zyskało popularność, ale wyszukiwanie stało się integralnym elementem naszego codziennego życia. Występuje wszędzie – na platformach e-commerce, blogach, w bazach wiedzy i w wielu innych miejscach. Dzieje się tak nie tylko dlatego, że pole wyszukiwania i ikona prezentują się estetycznie, lecz przede wszystkim dlatego, że realizują istotną i powszechną potrzebę.

Jeśli Twoja firma poszukuje solidnego rozwiązania w dziedzinie wyszukiwania, lub czujesz, że dotychczasowe nie spełnia oczekiwań, co należy zrobić?

Na szczęście nie jesteś skazany na ponoszenie horrendalnych kosztów licencyjnych ani konieczność utrzymywania rozbudowanego zespołu programistów i administratorów. Dziś przedstawiam kilka rekomendacji dotyczących wyszukiwarek, które można szybko zainstalować i zintegrować, co szczególnie docenią małe firmy z zespołami programistycznymi składającymi się z zaledwie 1-2 osób.

Silnik wyszukiwania MeiliSearch

MeiliSearch to jeden z najlepszych i najbardziej wartościowych silników wyszukiwania, z którymi możesz się zetknąć.

Co sprawia, że MeiliSearch zajmuje tak wysokie miejsce w moich rekomendacjach?

Oto powody.

Otwarte źródło

Kod źródłowy MeiliSearch jest dostępny publicznie w serwisie GitHub. Dzięki temu programiści mogą samodzielnie analizować dowolną część kodu, co daje firmom pewność co do jego jakości i intencji (np. braku ukrytych furtek czy programów szpiegujących). Doświadczeni programiści mają również możliwość dalszego ulepszania tej technologii.

Intuicyjny UX

MeiliSearch wyróżnia się brakiem skomplikowanych reguł (jak np. „a – b” oznaczające a, ale nie b). Wystarczy, że wpiszesz swoje zapytanie w sposób naturalny, a rezultaty będą pojawiać się płynnie. Silnik jest wysoce elastyczny i tolerancyjny, oferując precyzyjne wyniki nawet w przypadku literówek czy użycia synonimów. Co więcej, obsługuje wiele języków.

Przyjazny DevEx

Programiści z pewnością polubią MeiliSearch! Nie tylko oferuje on szerokie możliwości konfiguracji i skalowania, ale także udostępnia interfejs REST API. Dokumentacja jest obszerna, wyczerpująca i bardzo przejrzysta. Mimo że wykonywanie wywołań HTTP jest proste w każdym języku, dla osób, które chcą działać szybko, dostępne są przykłady w pięciu językach: JavaScript, Ruby, Python, Golang i PHP.

Proste rozwiązania wyszukiwania powinny być proste w obsłudze i konfiguracji. MeiliSearch spełnia te kryteria w każdym aspekcie! Jeśli chcesz zacząć, możesz skorzystać z opcji instalacji jednym kliknięciem na platformie DigitalOcean.

Solr

Solr, będący częścią projektu Apache, jest na rynku od wielu lat. Opiera się na znanej i niezawodnej bibliotece Lucene, która jest również bazą popularnego rozwiązania wyszukiwania o nazwie ElasticSearch. To wszystko sprawia, że Solr to potężne, skalowalne, zgodne ze standardami, bogate w funkcje i godne zaufania narzędzie do wyszukiwania.

Korzystają z niego takie potęgi jak Disney, eBay, Netflix, Zappos i BestBuy. Nie oznacza to jednak, że nie można uruchomić mniejszej i prostszej instalacji (na przykład na jednym serwerze, bez skalowania czy przełączania awaryjnego) i wykorzystać pełnię potencjału Solr.

Dlaczego warto wybrać Solr?

Oto kilka istotnych argumentów.

Precyzja i moc

Solr jest jednym z najdokładniejszych, najbardziej wydajnych i najpotężniejszych systemów wyszukiwania na świecie. Ponadto jest to oprogramowanie typu open source, co wyjaśnia, dlaczego tak wiele znanych firm zdecydowało się na jego wdrożenie. Jego możliwości w zakresie przetwarzania dokumentów i odpowiadania na zapytania wyszukiwania są niezrównane.

Łatwa instalacja i administracja

Instalacja Solr jest tak prosta jak rozpakowanie i uruchomienie programu. W przypadku prostych konfiguracji z jednym serwerem nie wymaga skomplikowanej administracji. Należy jednak monitorować zużycie pamięci RAM, ponieważ rozwiązania wyszukiwania, a zwłaszcza te oparte na Javie, mogą zużywać jej sporo (ponieważ starają się przechowywać wszystko w pamięci RAM, aby zapewnić szybki odczyt i zapis).

Panel administracyjny

Solr posiada panel administracyjny, który umożliwia wizualny monitoring i konfigurację systemu. Po krótkim przeszkoleniu nawet osoby niebędące programistami mogą nauczyć się interpretować kluczowe wykresy. Niewiele rozwiązań wyszukiwania z tej listy oferuje taką funkcjonalność.

Źródło obrazu: Oficjalna strona

API i zgodność ze standardami

Solr udostępnia wyniki poprzez API, które obsługuje wiele formatów – JSON, CSV, XML i format binarny. Dane monitorowania są przedstawiane zgodnie ze standardem JMX, co jest dużym ułatwieniem dla programistów Java.

O zaletach Solr można by mówić jeszcze długo, ale nie starczyłoby na to czasu. 😂 Wystarczy powiedzieć, że Solr to rozwiązanie z najwyższej półki, które sprawdzi się niezależnie od rodzaju danych, z którymi pracujesz.

Elasticsearch

Elasticsearch był i prawdopodobnie nadal jest pionierem w dziedzinie swobodnego wyszukiwania tekstu. Do dziś, gdy zapytasz programistę lub administratora systemu o rekomendację w kwestii silnika wyszukiwania, Elasticsearch najprawdopodobniej będzie pierwszą nazwą, jaką usłyszysz. W dzisiejszych czasach sporą popularność zyskuje również Algolia, ale o tym już wspominaliśmy.

Nie daj się zwieść przyciskowi „Rozpocznij bezpłatny okres próbny” na powyższej grafice. Mimo że podstawowa technologia Elasticsearch jest darmowa i open source, firma dąży do generowania zysków, koncentrując się na dużych przedsiębiorstwach. Dlatego widzimy tutaj wersję próbną ich usługi chmurowej, która ułatwia zarządzanie Elasticsearch, szczególnie w przypadku klastrów.

Podsumowując: Elasticsearch jest oprogramowaniem typu open source, darmowym i dostępnym dla każdego, bez żadnych ograniczeń.

A teraz przejdźmy do argumentów przemawiających za wyborem Elasticsearch:

  • Dojrzały i sprawdzony w praktyce silnik wyszukiwania. Dzięki temu łatwiej znajdziesz rozwiązanie, jeśli napotkasz nietypowe błędy.
  • Priorytetowe traktowanie klastrowania, skalowalności i asynchronicznego zapisu.
  • Dostępność poprzez prosty interfejs REST API (który ostatecznie wszyscy inni skopiowali).
  • Zorientowanie na dokument, lecz z możliwością obsługi schematu.
  • Wyjątkowo szybkie i precyzyjne wyniki. Konfigurowalna prędkość wyszukiwania.
  • Wzorcowa dokumentacja, zarówno pod względem objętości, jak i użyteczności.
  • Kompletna platforma do wyszukiwania i analizy w chmurze (stos ELK), jeśli zdecydujesz się zapłacić za wygodę.

Jedynym minusem Elasticsearch jest jego wysokie zapotrzebowanie na pamięć RAM. Jako konsultanci często mamy problem z przekonaniem klientów do zakupu serwera za 20 dolarów miesięcznie, co niestety nie pokrywa nawet minimalnych potrzeb Elasticsearch.

Jeśli chcesz zgłębić tajniki Elasticsearch, polecam zapoznać się z tym kursem na platformie Udemy.

Typesense

Typesense to lekki, prosty, ale jednocześnie potężny silnik wyszukiwania. Osoby poszukujące łatwości obsługi i prostoty powinny zdecydowanie go wypróbować.

Jedną z największych zalet Typesense jest możliwość przetestowania go bezpośrednio na ich stronie internetowej. Pozwala to zaoszczędzić czasu i frustracji w sytuacjach, gdy po skonfigurowaniu i przetestowaniu API okazuje się, że jedna z funkcji nie działa tak, jakbyśmy tego oczekiwali.

Nie oznacza to, że w silniku mogą występować błędy; chodzi o to, że jego działanie może nie odpowiadać Twoim preferencjom lub może być sprzeczne z wymaganiami Twojej firmy. Literówki, znaki specjalne, synonimy – możesz sprawdzić wyniki zwracane przez silnik bezpośrednio na stronie głównej (korzystają z bazy danych książek).

Jak widać na powyższym zrzucie ekranu, pole wyszukiwania znajduje się na górze strony. Wpisałem zapytanie „tra”, a poniżej wyświetliły się wyniki pasujące z bazy danych książek (wraz z metadanymi – łączna liczba wyników, bieżąca strona itp.).

Typesense posiada wiele zalet:

  • Technologia bazowa jest w pełni otwarta i dostępna.
  • Prosta konfiguracja HA (High Availability), jeśli istnieje taka potrzeba.
  • Tolerancja na literówki i inne zakłócenia w zapytaniach wyszukiwania.
  • Zaawansowany system filtrowania dla tych, którzy potrzebują precyzyjnej kontroli nad wynikami wyszukiwania.
  • Proste API REST, chociaż odnalezienie dokumentacji może wymagać pewnego wysiłku!
  • Dostępne są klienty (SDK) dla popularnych języków (JavaScript, Python, Ruby i PHP).

Jeśli konfiguracja nowych serwerów jest dla Ciebie uciążliwa, Typesense oferuje również usługę w chmurze, w której uruchomienie zajmuje dosłownie jedno kliknięcie. Rozliczenia są godzinowe, a liczba odczytów i zapisów nie jest mierzona. Szczerze mówiąc, uważam, że jest to korzystniejsza opcja dla większości firm, pod warunkiem wcześniejszego ustalenia cen i upewnienia się, że będzie to opłacalne.

Podsumowując, Typesense to bardzo sensowne rozwiązanie (gra słów zamierzona!), jeśli potrzebujesz czegoś małego, zgrabnego, precyzyjnego i niezawodnego.

Sonic

Sonic chwali się, że jest alternatywą dla Elasticsearch, działającą z wykorzystaniem „zaledwie kilku MB pamięci RAM”.

Jak to możliwe?

Wirtualna maszyna Javy (JVM) jest znana ze swojego dużego zapotrzebowania na pamięć RAM (samo uruchomienie JVM pochłania około 1 GB pamięci RAM); nie jest więc zaskoczeniem, że coś zakodowanego w języku Rust (który zapewnia programistom pełną kontrolę i bezpieczeństwo pamięci) może działać równie szybko, wykorzystując zaledwie kilka MB pamięci RAM.

Spokojnie, to tylko maskotka projektu.

W chwili pisania tego tekstu, z Sonica korzysta już kilka firm, chociaż jestem pewien, że jest ich więcej, tylko nie dodają swoich nazw. Nie pamiętam, jak dokładnie ani kiedy, ale natknąłem się na Sonica już jakiś czas temu. Wówczas, choć ucieszyłem się z alternatywy o tak małym zapotrzebowaniu na pamięć RAM, uważałem, że potrzebuje jeszcze czasu, aby się ustabilizować i pozbyć się ukrytych błędów. Wygląda na to, że ten czas właśnie nadszedł; przyszłość pokaże, jak popularny stanie się Sonic.

Dlaczego więc warto rozważyć Sonica w Twojej firmie/projekcie?

Oto kilka argumentów:

  • Wyjątkowo małe zapotrzebowanie na pamięć RAM jak na silnik wyszukiwania.
  • Biblioteki dostępne dla wszystkich głównych języków programowania. Autorzy dostarczają wersje dla Node, PHP i Rust, a społeczność stworzyła biblioteki dla innych języków (w tym egzotycznych, takich jak Elixir i Nim!).
  • Obsługa wielu języków (zbyt wielu, żeby je policzyć, ale w momencie pisania jest ich około 40-50).
  • Niespodzianka! Możesz używać nowych języków, a silnik i tak będzie działał (😂😂), choć stracisz wtedy niektóre zaawansowane funkcje, takie jak słowa stop.
  • Bardzo szybki silnik. Na stronie GitHub można znaleźć wyniki testów, gdzie czas przetwarzania i wyszukiwania osiągał mikrosekundy! Oczywiście, był to test na jednej maszynie, ponieważ opóźnienia sieciowe nigdy nie pozwolą na osiągnięcie tak niskich wyników.

Jeśli chcesz zobaczyć ten silnik w akcji, przejdź pod ten link (do strony firmy, która go używa) i wypróbuj pole wyszukiwania:

Sonic ma pewne ograniczenia jako wyszukiwarka. Twórcy otwarcie omówili je na swojej stronie GitHub. Radzę dokładnie przeanalizować tę listę i upewnić się, że Twoje przypadki użycia nie kolidują z jej ograniczeniami. Wszystko ma swoje ograniczenia; często są one ukrywane, więc nie zdajemy sobie z nich sprawy, dopóki nie jest za późno. Z tego powodu uważam, że Sonic to doskonały wybór, jako silnik wyszukiwania.

TNT Search

Przed nami fascynujący element tej listy. Pierwszą ciekawostką jest to, że ten kompletny, gotowy do użytku silnik wyszukiwania został napisany w PHP!

Tak, ze wszystkich możliwych języków, w PHP. Mówię to nie dlatego, że nie lubię PHP, ale dlatego, że z założenia jest to język do procesów krótkotrwałych.

Druga ciekawa rzecz to ich licencja. Właściwie sama licencja to MIT, więc nie ma problemów, ale autorzy określają to oprogramowanie jako PS4Ware; jeśli używasz TNTSearch w produkcji, powinieneś im wysłać grę na PS4! 😂 Nie jest to obowiązkowe, jak wskazuje „powinieneś”, ale jest niesamowite. Mam nadzieję, że zaktualizują ją do licencji PS5, choć na to jeszcze za wcześnie.

W każdym razie, wywodząc się z silnego środowiska PHP + Laravel, bardzo doceniam wysiłki tych programistów. Ich strona internetowa nie zawiera wielu informacji, ale wydaje się sugerować, że są konsultantami, dlatego gorąco polecam kontakt z nimi, jeśli masz jakieś projekty!

Czy są jakieś dobre powody, aby używać TNTSearch w swoich projektach?

Owszem:

  • Kod napisany w PHP, dla PHP i przez specjalistów PHP. Ekosystem PHP potrzebuje więcej dedykowanych, wysokiej jakości rozwiązań, takich jak to.
  • Ważne funkcje, takie jak wyszukiwanie rozmyte, wyszukiwanie geograficzne i klasyfikacja tekstu.
  • Łatwość zmiany indeksu wyszukiwania, co daje dużą elastyczność, której brakuje wielu rozwiązaniom.
  • Stemming, ranking BM25 i niestandardowa tokenizacja zapewniają wysoką dokładność.
  • Łatwe wdrożenie – tak jak w przypadku innych pakietów Composer!

Tutaj możesz sprawdzić wydajność silnika i przekonać się, jak szybki i precyzyjny jest. Chciałbym jeszcze raz podkreślić aspekt PHP: jeśli utrzymujesz projekt PHP, chcesz pozostać w jego środowisku tak bardzo, jak to możliwe (dlaczego? pomyśl o kosztach ponownego przeszkolenia). W takich przypadkach TNTSearch oferuje dużą wartość, której trudno odmówić!

Vespa

Vespa to rozbudowana i potężna propozycja. Podobnie jak kilka innych pozycji na tej liście, jest zbyt rozbudowana, aby opisać ją kilkoma słowami. Ale muszę spróbować, więc spróbuję. 🙂 Vespa jest oczywiście silnikiem wyszukiwania, ale używanie go tylko w tym celu oznacza marnowanie jego potencjału.

Vespa została stworzona do obsługi nieograniczonych ilości danych (Big Data), oferując funkcje oparte na uczeniu maszynowym i rozbudowane opcje personalizacji.

Vespa pozycjonuje się jako konkurent Elasticsearch i tradycyjnych baz danych i oferuje przejrzyste porównanie, kiedy i jak ich używać.

Jak widać, im bardziej potrzebujesz operacji opartych na uczeniu maszynowym, tym bardziej sensowna jest Vespa. W przypadku standardowego wyszukiwania dla małych i średnich firm nie sądzę, aby miał on przewagę nad innymi opcjami.

Biorąc pod uwagę, że stale generujesz ogromne ilości danych i chcesz usprawnić proces podejmowania decyzji za pomocą AI/ML (co pasuje do profilu wielu współczesnych firm SaaS), oto dlaczego Vespa ma sens:

  • Open source: Żadnych ukrytych licencji ani niejasnych umów. I oczywiście nic do płacenia, chociaż zawsze podkreślam, że firmy regularnie płacą za projekty, z których korzystają (nawet 50 USD miesięcznie bardzo im pomoże).
  • Praca w czasie rzeczywistym: Vespa działa w czasie rzeczywistym. Może nie tylko przetwarzać i wyszukiwać dane w miarę ich pojawiania się, ale również modyfikować konfigurację w locie.
  • Skalowalność i odporność: Vespa skaluje się bezproblemowo. Dobrze radzi sobie również z nagłym znikanem węzłów, zapewniając wysoką niezawodność.
  • Ranking i rekomendacje: Możliwości wyszukiwania, rankingu i rekomendacji w Vespie można łączyć z ustrukturyzowanymi zapytaniami, aby uzyskiwać naprawdę dokładne wyniki.
  • Łatwa implementacja sztucznej inteligencji / ML: Vespa jest dostarczana z pakietem wysokiej jakości, wstępnie wytrenowanych modeli ML. Nie musisz zatrudniać 20 analityków danych, aby uporządkować i wykorzystać swoje dane.
  • Niestandardowe wtyczki: Programiści mogą tworzyć niestandardowe wtyczki w języku Java za pomocą udostępnionego API, aby modyfikować działanie silnika.

Vespa jest bez wątpienia gigantem i skierowana jest do zespołów, które wykraczają poza początkowy etap rozwoju – niezależnie od tego, czy chodzi o wielkość zespołu, umiejętności technologiczne, budżet, ilość przetwarzanych danych czy inne aspekty. W tym segmencie Vespa doskonale sprawdza się w swoim środowisku i jest gorąco polecana.

Ambar

W przypadku niektórych firm dane do wyszukiwania nie są już starannie przetwarzane i przechowywane w postaci dokumentów JSON. Jest to raczej bałagan w dosłownym tego słowa znaczeniu – chaotyczna mieszanka różnego rodzaju dokumentów, takich jak pliki Word, PDF, HTML itd. Jeśli jesteś w takiej sytuacji i uważasz, że nie ma dla Ciebie ratunku, to powitaj Ambar!

Największą zaletą Ambara jest szeroki zakres obsługiwanych typów plików:

  • Formaty plików MS Office (.docx, .xlsx itp.), w tym PowerPoint, Visio i Publisher!
  • Formaty plików OpenOffice
  • Dokumenty PDF z automatycznym OCR w celu wyodrębnienia informacji.
  • Obrazy
  • Formaty archiwów e-mail, takie jak PST (witajcie, użytkownicy Outlooka!)
  • Wiadomości e-mail z załącznikami

To jeszcze nie koniec. Ambar potrafi pracować z dużymi plikami (ponad 30 MB), archiwami ZIP i oferuje wielowątkowość, zapewniając pełne wykorzystanie procesora i szybsze wyniki. Jeśli więc masz dokumenty sprzed lat zalegające na jakimś dysku na zapomnianym serwerze, nadszedł czas, aby je przywrócić i przekazać wszystko Ambar!

Podsumowanie

Wyszukiwanie 🔎 to potęga, magia, wszechobecność!

Może to nawet czarna magia, ale nie ma powodu, dla którego wszyscy (oczywiście z pomocą programistów) nie mogliby z niej korzystać. Od firm, przez osoby prywatne po rządy, silniki wyszukiwania z tej listy oferują praktycznie bezwysiłkowe rozwiązanie o dużych korzyściach i wpływie.

Śmiało, zdobądź serwer w chmurze i zainstaluj wybrany silnik wyszukiwania.


newsblog.pl