8 Снажна претрага 🔍 Софтвер за претраживач који се самостално хостује за ваш производ

Može se učiniti zastrašujućim, ali integracija moćne funkcije pretraživanja u vašu aplikaciju nije komplikovana niti dugotrajna. Predstavljamo nekoliko čvrstih preporuka!

U protekle dve do tri decenije, iako su mnoge tehnologije ostavile jak utisak, pretraživanje je jedna od retkih koja je postala suštinski deo naše svakodnevice. Prisutno je svuda – na e-trgovinskim platformama, blogovima, bazama znanja i mnogim drugim mestima – ne zbog toga što okvir za pretragu i ikona izgledaju privlačno, već zato što rešavaju ključan problem.

Ako ste kompanija koja traga za odgovarajućim rešenjem za pretraživanje ili ste umorni od trenutnog, šta je vaš sledeći korak?

Na sreću, ne morate da izdvajate ogromne sume za licence niti da imate tim od 20 programera i sistemskih administratora. Danas ću vam predložiti nekoliko mehanizama za pretraživanje koji se mogu brzo implementirati i integrisati, posebno za mala preduzeća sa timovima od 1-2 programera.

MeiliSearch

Jedan od najboljih i najkorisnijih mehanizama za pretraživanje na koji ćete naići je MeiliSearch.

Šta to čini MeiliSearch mojim favoritom?

Evo objašnjenja.

Otvorenog koda

Kompletan izvorni kod MeiliSearch-a je javno dostupan na GitHub-u. To znači da programeri mogu detaljno da analiziraju svaki deo koda. Sa druge strane, kompanije mogu biti sigurne u kvalitet i namere (na primer, nema skrivenih zadnjih vrata ili programa za skeniranje). Pored toga, iskusni programeri mogu doprineti daljem razvoju ove tehnologije.

Izvanredno korisničko iskustvo

MeiliSearch ne poseduje komplikovana pravila (kao što je „a – b“ što znači a, ali ne i b). Jednostavno unesite svoj upit prirodno i rezultati će se odmah prikazati. Ovaj mehanizam je vrlo tolerantan i prilagodljiv, pružajući precizne rezultate čak i sa greškama u kucanju ili sinonimima. Takođe podržava višejezičnost.

Odličan za programere

Programeri će obožavati MeiliSearch! Osim što je prilagodljiv i skalabilan, nudi i interfejse kao što je REST API! Dokumentacija je takođe izvanredna i detaljna. Iako je upućivanje HTTP zahteva trivijalno na bilo kom jeziku, primeri su obezbeđeni za pet programskih jezika (JavaScript, Ruby, Python, Go i PHP) za one koji su u žurbi.

Jednostavna rešenja za pretraživanje treba da budu laka za korišćenje i podešavanje. U tom smislu, MeiliSearch ispunjava sva očekivanja! Kada odlučite da pređete na sledeći korak, pokrenite ga na DigitalOcean-u jednim klikom.

Solr

Solr, deo Apache projekta, prisutan je već godinama. Izgrađen je na poznatoj i pouzdanoj biblioteci Lucene, koja takođe pokreće popularno rešenje za pretraživanje pod nazivom Elasticsearch. Sve ovo znači da je Solr jedno od najmoćnijih, skalabilnih, standardizovanih, bogatih funkcijama i pouzdanih rešenja za pretraživanje.

Koriste ga giganti kao što su Disney, eBay, Netflix, Zappos i BestBuy. Međutim, to ne znači da ne možete pokrenuti manju i jednostavniju instalaciju (na primer, na jednoj mašini, bez skaliranja i bez prelaska na rezervnu opciju – ponekad je i to u redu) i iskoristiti prednosti ovog moćnog rešenja pod nazivom Solr.

Zašto onda koristiti Solr?

Evo nekoliko dobrih razloga.

Precizan i moćan

Solr je jedan od najpreciznijih, najsposobnijih i najmoćnijih sistema za pretraživanje na svetu. Osim toga, otvorenog je koda, što objašnjava zašto su velika imena (kao što je već pomenuto) obratila pažnju na njega. Njegova sposobnost da analizira dokumente i odgovara na upite za pretragu je bez premca.

Jednostavna instalacija i održavanje

Instalacija Solr-a je jednostavna kao i raspakivanje i pokretanje programa. Za jednostavne sisteme sa jednom mašinom, održavanje nije komplikovano; treba obratiti pažnju na potrošnju RAM-a, jer rešenja za pretraživanje generalno, a posebno tehnologije zasnovane na Javi, mogu biti zahtevne po pitanju RAM-a (jer drže ili pokušavaju da drže sve u RAM-u da bi omogućile brže čitanje/pisanje).

Administrativni panel

Solr dolazi sa administrativnim panelom koji omogućava vizuelno praćenje i konfigurisanje. Uz malo obuke, čak i oni koji nisu programeri mogu naučiti da čitaju ključne tabele. Malo rešenja za pretraživanje sa ove liste ima ovakve funkcionalnosti.

Izvor slike: Zvanična web stranica

Pokretan API-jem, usklađen sa standardima

Solr nudi interfejs sa rezultatima u API-ju koji može da obrađuje više formata – JSON, CSV, XML i binarni. On obezbeđuje podatke za praćenje u skladu sa JMX standardom, što je odlično za Java programere.

Postoji mnogo toga što se može reći u korist Solr-a, ali pokušaj da se sve obuhvati bi nas doveo do kraja vremena. 😂 Dovoljno je reći da je Solr vrhunsko rešenje i sa njim nikada nećete pogrešiti, bez obzira na vrstu podataka sa kojima radite.

Elasticsearch

Elasticsearch je bio, a verovatno i dalje jeste, pionir u pretraživanju slobodnog teksta. Čak i danas, ako od programera ili sistemskog administratora zatražite preporuku za mehanizam pretraživanja, Elasticsearch će verovatno biti jedino ime koje će mu pasti na pamet. Naravno, u poslednje vreme mnogi će preporučiti i nešto poput Algolije, ali već smo razmatrali takve slučajeve. 🤪

Neka vas dugme „Započni besplatnu probnu verziju“ na gornjoj slici ne zavara. Iako je osnovna tehnologija Elasticsearch-a otvorenog koda i besplatna, kompanija pokušava da unovči svoj trud i cilja na kompanije. Dakle, ono što ovde vidite je zapravo probna verzija njihove usluge u oblaku, koja olakšava upravljanje Elasticsearch-om, posebno kada su u pitanju klasteri.

Uf, puno detalja za objašnjavanje. Da ponovimo: Elasticsearch je otvorenog koda i besplatan, i svako ga može lako podesiti i koristiti bez ikakvih ograničenja.

A sada, kao što se očekuje, hajde da razmotrimo razloge zašto odabrati Elasticsearch:

  • Zreo i proveren mehanizam za pretraživanje. To znači da ćete mnogo lakše pronaći rešenja ako se zaglavite sa nekim „čudnim“ greškama.
  • Prvoklasan fokus na klasterisanje, skalabilnost i asinhrono upisivanje.
  • Dostupan putem jednostavnog REST API-ja (što su svi ostali kopirali).
  • Orijentisan na dokumente, ali podržava i šemu ako je potrebno.
  • Neverovatno brzi i precizni rezultati. Podesiva brzina pretrage.
  • Izvrsna dokumentacija, kako po količini, tako i po korisnosti.
  • Kompletna platforma u oblaku za pretragu i analizu (ELK stek), ako želite da platite za udobnost.

Jedina zamerka koju bih imao na Elasticsearch je velika potrošnja RAM-a. Mislim, kao konsultantima, prilično nam je teško da ubedimo klijente da investiraju u server koji košta 20 dolara mesečno, a to je nažalost daleko od onoga što Elasticsearch zahteva.

Ako želite da naučite Elasticsearch, pogledajte ovaj Udemy kurs.

Typesense

Typesense je lagan, jednostavan, ali moćan mehanizam za pretraživanje. Oni koji traže efikasnost i jednostavnost svakako bi trebalo da ga isprobaju.

Jedna od najboljih stvari u vezi sa Typesense-om je što ga možete testirati direktno na njihovoj veb stranici. To može uštedeti frustracije i vreme u slučajevima kada sve podesite i isprobate API, samo da biste otkrili da jedna ili više funkcija ne radi onako kako ste očekivali.

To ne znači da postoji greška u samom mehanizmu; jednostavno, razumevanje motora možda nije ono što vi preferirate ili bi moglo biti u potpunom sukobu sa vašim poslovnim domenom. Greške u kucanju, specijalni simboli, sinonimi i još mnogo toga… možete proveriti rezultate koje mašina vraća direktno na početnoj stranici (za ovo koriste bazu podataka knjiga).

Kao što vidite, ovaj odeljak se nalazi odmah ispod gornjeg. U polje za pretragu sam uneo upit „tra“, a ispod vidim odgovarajuće rezultate iz baze podataka knjiga (kao i metapodatke – ukupan broj rezultata, trenutnu stranicu, itd.).

Typesense ima mnoge prednosti kada je u pitanju odabir mehanizma za pretraživanje:

  • Tehnologija koja stoji iza njega je u potpunosti otvorenog koda i prilagodljiva.
  • Lako je konfigurirati HA (High Availability) podešavanje, ako vam je potrebno.
  • Tolerantan je kada su u pitanju greške u kucanju i drugi nedostaci u upitima za pretraživanje.
  • Napredan sistem filtriranja za one kojima je potrebna detaljna kontrola nad rezultatima pretrage.
  • Jednostavan REST API, iako ćete se morati malo potruditi da pronađete odgovarajuću dokumentaciju!
  • Klijenti (SDK) su dostupni za neke od glavnih programskih jezika (JavaScript, Python, Ruby i PHP).

Na kraju, ako vam je ideja o postavljanju novih servera zamorna, Typesense takođe nudi cloud rešenje gde je obezbeđivanje servera moguće jednim klikom. Naplata se vrši po satu, a čitanje i pisanje se ne naplaćuju. Iskreno, rekao bih da je ovo bolja opcija za većinu preduzeća, pod uslovom da su unapred odredili cene i osigurali da im se to isplati.

U suštini, Typesense ima smisla (bez igre reči!) ako vam je potrebno nešto malo, efikasno, precizno i pouzdano.

Sonic

Sonic se ponosi time što je alternativa Elasticsearch-u koja radi sa „nekoliko MB RAM-a“.

Kako je to moguće?

Pa, poznato je da je Java virtuelna mašina (JVM) zahtevna po pitanju RAM-a (generalno, samo pokretanje JVM-a troši oko 1 GB RAM-a); stoga ne čudi što nešto kodirano u Rust jeziku (koji programerima pruža potpunu kontrolu i bezbednost memorije) može raditi jednako brzo i koristiti samo nekoliko MB RAM-a.

Opustite se svi! Ovo je samo maskota projekta.

U trenutku pisanja ovog teksta, navedeno je nekoliko kompanija koje ga koriste, iako sam siguran da ih ima još nekoliko kojima nije smetalo da se dodaju na listu. Ne sećam se kako niti tačnog vremenskog okvira, ali sam ranije naišao na Sonic; tada sam, iako sam bio srećan što sam video alternativu koja malo troši memoriju, mislio da će biti potrebno vreme da se stabilizuje i ispravi skrivene greške. Pa, izgleda da su manje-više uspeli; koliko će Sonic postati popularan, pokazaće vreme.

U redu, ako zanemarimo razmišljanje, zašto biste razmislili o korišćenju Sonic-a za vašu organizaciju/projekat?

Evo nekoliko razloga:

  • Izuzetno mali memorijski otisak, kada je u pitanju mehanizam za pretraživanje.
  • Biblioteke su dostupne za sve glavne programske jezike. Node, PHP i Rust su jezici koje su sami autori objavili, dok je druge kreirala zajednica (radujte se, jer su i neobični jezici poput Elixir-a i Nim-a takođe pokriveni!).
  • Podržano je nekoliko jezika (bilo ih je previše za brojanje, ali mislim da je u trenutku pisanja podržano 40-50 jezika).
  • Iznenadjenje! Možete čak i da koristite nove jezike, a mašina će raditi (😂😂), iako ćete izgubiti neke napredne funkcije kao što su „stop reči“.
  • Veoma brz mehanizam. Ako pogledate njihovu GitHub stranicu, videćete da su vremena unosa i pretrage u nekim slučajevima bila u mikrosekundama! Naravno, ovo je bio test na jednoj mašini, jer kašnjenje mreže nikada neće dozvoliti da brojke budu tako male.

Ako želite da vidite ovaj mehanizam u akciji, idite na ovaj link (jedna od kompanija koja ga koristi) i poigrajte se sa okvirom za pretraživanje koji se tamo nalazi:

Postoje određena ograničenja za Sonic kao mehanizam za pretraživanje. Programeri su ih istakli i otvoreno o njima razgovarali na svojoj GitHub stranici. Moj savet bi bio da pažljivo pregledate ovu listu i utvrdite da li se vaši slučajevi korišćenja poklapaju sa onim što je navedeno u njihovom domenu. Međutim, sve ima ograničenja; samo su ona ponekad sakrivena, tako da toga nismo svesni dok ne bude prekasno. Stoga smatram da je Sonic odličan izbor za mehanizam za pretraživanje.

TNTSearch

Sada imamo fascinantan unos na ovoj listi. Prva zanimljivost je da je ovaj potpuno funkcionalan mehanizam za pretraživanje, spreman za proizvodnju, napisan u PHP-u!

Da, od svih mogućih jezika, baš u PHP-u. I ne govorim ovo zato što mrzim PHP, već zato što je po svojoj prirodi kratkotrajan proces.

Druga zanimljivost je njihova licenca, barem u trenutku pisanja ovog teksta. Zapravo, sama licenca je MIT, tako da tu nema problema, ali autori klasifikuju ovaj softver kao PS4Ware; ako koristite TNTSearch u proizvodnji, trebalo bi da im pošaljete PS4 igru! 😂🤣 Naravno, ovo nije obavezno, kao što „trebalo bi“ ukazuje, ali je neverovatno smešno. Takođe se nadam da će ga nadograditi na PS5 licencu, iako je još rano.

U svakom slučaju, pošto imam jak PHP + Laravel background, jako cenim trud ovih momaka. Njihova web stranica ne govori mnogo, ali izgleda da ukazuje da su oni konsultanti, pa vam toplo preporučujem da ih kontaktirate ako imate projekte!

A sada, postoje li dobri razlozi da koristite TNTSearch u svojim projektima?

Da, postoje:

  • Kodiran je u PHP-u, za PHP, od strane PHP-a. PHP ekosistemu treba više posvećenih i kvalitetnih rešenja kao što je ovo.
  • Važne funkcije kao što su nejasna pretraga, geo-pretraga i klasifikacija teksta.
  • Lako se menja indeks pretrage, što je velika fleksibilnost koja nedostaje mnogim rešenjima.
  • Steeming, BM25 rangiranje i prilagođena tokenizacija pružaju visoku preciznost.
  • Jednostavno podešavanje – kao i svaki drugi Composer paket!

Ovde možete proveriti performanse motora i sami se uveriti koliko je brz i precizan. Ponovo bih naglasio PHP aspekt: ako održavate PHP projekat, želite da ostanete unutar PHP granica što je više moguće (zašto? razmislite o troškovima ponovne obuke). U takvim slučajevima, TNTSearch nudi vrednost koju je teško odbiti!

Vespa

Vespa je obimna i značajna ponuda. Kao i nekoliko drugih unosa na ovoj listi, prevelika je da bi se opisala u nekoliko reči. Ali moram pokušati, pa hoću. 🙂 Vespa je mehanizam za pretraživanje, naravno, ali korišćenje kao običnog mehanizma za pretraživanje ne iskorišćava njen pun potencijal.

Vespa je dizajnirana da obrađuje ogromne količine podataka (Big Data) i pruža funkcionalnosti zasnovane na mašinskom učenju i beskrajne mogućnosti prilagođavanja.

Vespa se pozicionira kao konkurent Elasticsearch-u i tradicionalnim bazama podataka i pruža korisno poređenje o tome šta i kada koristiti.

Kao što vidite, što više težite ka operacijama vođenim mašinskim učenjem, to Vespa više ima smisla. Kao čisto rešenje za pretraživanje za mala i srednja preduzeća, mislim da nema prednosti u odnosu na druge opcije.

Sada, s obzirom na to da kontinuirano generišete ogromne količine podataka i želite da poboljšate donošenje odluka putem veštačke inteligencije/mašinskog učenja (opis koji danas odgovara mnogim SaaS preduzećima), evo zašto Vespa ima smisla:

  • Otvorenog koda: Nema neobičnih licenci i ugovora sa skrivenim zamkama. I ništa za plaćanje, iako uvek napominjem da kompanije treba da plaćaju redovan iznos za projekte koje najviše koriste (čak i 50 dolara mesečno će im puno značiti).
  • U realnom vremenu: Vespa je zaista u realnom vremenu. Ne samo da može da obrađuje i pretražuje podatke u trenutku kada pristižu, već se čak i njena konfiguracija može menjati dok je pokrenuta.
  • Skalabilna i otporna: Vespa je jednostavna za skaliranje. Takođe veoma dobro reaguje na iznenadni nestanak čvorova, pružajući visoku pouzdanost.
  • Rangiranje i preporuke: Preporuke za pretragu, rangiranje i Vespa mogu se spojiti sa strukturiranim upitima kako bi se dobili zaista precizni rezultati.
  • Jednostavna veštačka inteligencija/mašinsko učenje: Vespa dolazi u paketu sa kvalitetnim, unapred obučenim ML modelima. Ne morate da angažujete 20 naučnika za podatke da biste obradili i koristili svoje podatke.
  • Prilagođeni dodaci: Postoji kompletan skup API-ja koji pomažu programerima da kreiraju prilagođene Java dodatke, ako je potrebno da promene način rada motora.

Vespa je ogromna, bez sumnje, i stoga je jasno namenjena timovima koji su malo iznad početnog nivoa – bilo da je reč o veličini tima, tehničkim sposobnostima, infrastrukturnom budžetu, količini podataka ili nečemu drugom. Za taj segment, Vespa će biti odličan izbor i toplo se preporučuje.

Ambar

Za neke kompanije, podaci za pretraživanje nisu već uredno transformisani i uskladišteni kao JSON dokumenti; umesto toga, oni su nered u pravom smislu te reči – haotična kolekcija svih vrsta dokumenata kao što su Word, PDF, HTML datoteke, itd. Ako ste jedan od njih i mislite da nema nade, pozdravite Ambar!

Najbolja stvar kod Ambar-a je veliki broj vrsta datoteka sa kojima može da radi:

  • MS Office formati datoteka (.docx, .xlsx, itd.), uključujući PowerPoint, Visio i Publisher!
  • OpenOffice formati datoteka
  • PDF dokumenti sa automatski primenjenim OCR-om za izdvajanje informacija.
  • Slike
  • Formati arhiva e-pošte kao što je PST (pozdrav, korisnici Outlook-a!)
  • E-poruke sa prilozima

Dobrim stvarima tu nije kraj. Ambar je sposoban da radi sa velikim datotekama (preko 30 MB), ZIP arhivama i sa više niti (multithreading) radi potpunog iskorišćenja CPU-a i bržih rezultata. Dakle, ako imate višegodišnje dokumente koji se nalaze na nekom disku na zaboravljenom serveru, vreme je da ih vratite i sve unesete u Ambar!

Zaključak

Pretraživanje 🔎 je moćno, pretraživanje je magično, i pretraživanje je svuda!

Možda je to čak i crna magija, ali danas nema razloga zašto svi (naravno, uz pomoć programera) ne mogu da iskoriste njene prednosti. Od preduzeća preko pojedinaca do vlada, mehanizmi za pretraživanje sa ove liste pružaju rešenja uz minimalan napor sa eksponencijalnim prednostima i uticajem.

Samo napred, nabavite server u oblaku i instalirajte željeni softver za pretraživanje sa liste iznad.