8 Self-hosted kraftfull sökmotorprogramvara för din produkt

By rik

Att implementera en effektiv sökfunktion i din applikation kan vid första anblicken verka avskräckande, men det är varken en komplicerad eller tidskrävande process. Här följer några gedigna rekommendationer som kan vara till hjälp!

Trots den snabba tekniska utvecklingen under de senaste decennierna, har sökfunktionaliteten blivit en oumbärlig del av vår vardag. Den återfinns överallt – i e-handelsplattformar, bloggar, kunskapsdatabaser och mycket mer. Detta beror inte enbart på att sökrutor och ikoner ser estetiskt tilltalande ut, utan framför allt på att de fyller ett viktigt behov.

Om du som företag letar efter en ny söklösning eller är missnöjd med din nuvarande, vad bör du göra?

Lyckligtvis behöver du inte betala orimliga licensavgifter eller ha ett stort team av utvecklare och systemadministratörer. Idag presenterar jag några rekommendationer för sökmotorer som kan installeras och integreras snabbt, särskilt för mindre företag med mindre utvecklingsteam.

MeiliSearch

MeiliSearch är en av de mest utmärkande och värdefulla sökmotorerna som finns tillgängliga.

Vad är det som gör att jag listar MeiliSearch bland mina topprekommendationer?

Här kommer förklaringen.

Öppen källkod

All källkod för MeiliSearch är fritt tillgänglig på GitHub. Detta innebär att utvecklare kan granska varje del av koden. Det ger företag en säkerhet gällande kvalitet och avsikter (inga dolda bakdörrar eller spionprogram). Erfarna utvecklare kan dessutom bidra till att förbättra tekniken ytterligare.

Användarvänlig upplevelse (UX)

MeiliSearch saknar komplexa regler. Du kan enkelt skriva din sökning på ett naturligt sätt och resultaten dyker upp smidigt. Motorn är flexibel och anpassningsbar och ger precisa resultat även vid stavfel eller användning av synonymer. Den har också stöd för flera språk.

Utvecklarvänlig upplevelse (DevEx)

Utvecklare kommer att uppskatta MeiliSearch! Den är inte bara anpassningsbar och skalbar, utan har även ett gränssnitt som ett REST API. Dokumentationen är också omfattande och utmärkt. Även om det är enkelt att göra HTTP-anrop i alla språk, finns det exempel på fem språk (JavaScript, Ruby, Python, Golang och PHP) för de som har bråttom.

Enkla söklösningar bör vara enkla att använda och ställa in. MeiliSearch uppfyller alla dessa krav! När du är redo att gå vidare, kan du enkelt sätta igång på DigitalOcean med ett klick.

Solr

Solr, en del av Apache-projektet, har funnits i flera år. Den är baserad på det välkända och pålitliga Lucene-biblioteket, som även driver den populära söklösningen Elasticsearch. Det innebär att Solr är en av de mest kraftfulla, skalbara, standardkompatibla, funktionsrika och pålitliga söklösningarna.

Den används av stora aktörer som Disney, eBay, Netflix, Zappos och BestBuy. Det betyder dock inte att du inte kan köra en enklare installation (till exempel en maskin utan skalning eller failover) och dra nytta av kraften i Solr.

Varför ska man då använda Solr?

Här är några goda skäl.

Exakt och kraftfull

Solr tillhör de mest exakta, kapabla och kraftfulla söksystemen i världen. Dessutom är det öppen källkod, vilket förklarar varför stora företag (som nämnts tidigare) använder sig av den. Dess förmåga att bearbeta dokument och svara på sökfrågor är oöverträffad.

Enkel installation och underhåll

Att installera Solr är lika enkelt som att packa upp och köra programmet. För enklare system med en enda maskin krävs inget komplicerat underhåll. Det är dock bra att hålla koll på RAM-användningen, eftersom söklösningar i allmänhet och Java-baserade tekniker i synnerhet kan vara ganska minneskrävande (eftersom de behåller eller försöker behålla all data i RAM för att möjliggöra snabb läsning och skrivning).

Administrationspanel

Solr har en administrationspanel som möjliggör visuell övervakning och konfigurering. Även personer utan utvecklarbakgrund kan lära sig att läsa viktiga tabeller med lite utbildning. Det är inte många söklösningar på den här listan som erbjuder en sådan funktionalitet.

API-driven, standardkompatibel

Solr erbjuder ett resultatgränssnitt i ett API som kan hantera olika format – JSON, CSV, XML och binärt. Den levererar övervakningsdata enligt JMX-standarden, vilket är en fördel för Java-utvecklare.

Det finns mycket mer att säga om Solr, men det skulle ta för lång tid att täcka allt. Kort sagt, Solr är en förstklassig lösning som du inte kan gå fel med, oavsett vilken typ av data du arbetar med.

Elasticsearch

Elasticsearch var, och är förmodligen fortfarande, en pionjär inom fritextsökning. Även idag är Elasticsearch det första namnet som många programmerare eller systemadministratörer nämner som en rekommendation för sökmotorer. Det är sant att många också rekommenderar Algolia, men vi har redan diskuterat den lösningen.

Låt dig inte luras av knappen ”Starta gratis provperiod” i bilden ovan. Själva kärnan i Elasticsearch-tekniken är öppen källkod och gratis, men företaget försöker tjäna pengar på sina tjänster och riktar sig främst till företag. Det du ser här är alltså testversionen av deras molntjänst, som underlättar hanteringen av Elasticsearch, särskilt med klusterinblandning.

Låt oss sammanfatta: Elasticsearch är öppen källkod och gratis, och vem som helst kan enkelt installera och använda den utan begränsningar.

Här är anledningarna till att välja Elasticsearch:

  • En välbeprövad och mogen sökmotor. Det innebär att du har större chans att hitta lösningar om du stöter på ”konstiga” buggar.
  • Stort fokus på klustring, skalbarhet och asynkron skrivning.
  • Tillgänglig via ett enkelt REST API (vilket andra lösningar sedan kopierat).
  • Dokumentorienterad men stöder schema vid behov.
  • Snabba och exakta resultat. Konfigurerbar sökhastighet.
  • Utmärkt dokumentation, både i mängd och användbarhet.
  • En komplett plattform för sökning och analys i molnet (ELK-stacken), om du vill betala för bekvämligheten.

Den största nackdelen med Elasticsearch är dess höga RAM-förbrukning. Det kan vara svårt att övertyga kunder att investera i en server som kostar $20/månad, vilket tyvärr inte räcker till för vad Elasticsearch kräver.

Om du är intresserad av att lära dig Elasticsearch kan du kolla in denna Udemy-kurs.

Typesense

Typesense är en lätt, enkel men ändå kraftfull sökmotor. Den som söker användarvänlighet och enkelhet bör absolut testa denna.

En av de stora fördelarna med Typesense är att du kan testa den direkt på deras webbplats. Det kan spara tid och frustration om du upptäcker att en eller flera funktioner inte fungerar som du tänkt dig.

Det betyder inte att det inte kan finnas buggar i motorn. Det kan också vara så att motorns uppfattning om något inte stämmer överens med dina preferenser eller är i konflikt med ditt affärsområde. Du kan kontrollera resultaten som motorn genererar direkt på webbplatsen, inklusive hantering av stavfel, specialtecken, synonymer med mera.

Som du ser i bilden ovan, har jag skrivit in ”tra” i sökrutan och får matchande resultat från bokdatabasen samt metadata.

Typesense har mycket att erbjuda som sökmotor:

  • Öppen källkod.
  • Enkel konfiguration för hög tillgänglighet (HA).
  • Tolerant mot stavfel och andra otydligheter i sökfrågor.
  • Avancerat filtreringssystem för den som behöver kontroll över sökresultaten.
  • Enkelt REST API, men dokumentationen kan kräva lite extra arbete för att hitta det!
  • SDK:er finns för flera stora språk (JavaScript, Python, Ruby och PHP).

Om du tycker att det är jobbigt att sätta upp nya servrar, erbjuder Typesense även en molntjänst där provisioneringen sker med ett enda klick. Faktureringen sker per timme och det finns ingen begränsning för läsning och skrivning. Detta kan vara ett bra alternativ för de flesta företag, förutsatt att de har räknat ut prissättningen i förväg.

Sammanfattningsvis är Typesense ett bra val om du behöver något litet, smart, exakt och pålitligt.

Sonic

Sonic marknadsför sig som ett alternativ till Elasticsearch som körs på ”några MB RAM”.

Hur är det möjligt?

Java Virtual Machine (JVM) är känd för att vara RAM-krävande (JVM kan vanligtvis ta upp cirka 1 GB RAM). Därför är det inte konstigt att något som är kodat i Rust (vilket ger full kontroll och minnessäkerhet för utvecklare) kan köras lika snabbt med endast några få MB RAM.

I skrivande stund finns det ett fåtal företag listade som användare. Jag har stött på Sonic tidigare och även om jag var glad över att se ett minnesvänligt alternativ, trodde jag att det skulle behöva tid för att stabilisera och åtgärda eventuella buggar. Det verkar som om de har kommit långt. Hur populärt Sonic kommer att bli får tiden utvisa.

Varför ska du överväga Sonic för din organisation/projekt?

Här är några anledningar:

  • Extremt låg minnesanvändning, i jämförelse med andra sökmotorer.
  • Bibliotek finns tillgängliga för de flesta större programmeringsspråk. Utvecklarna själva har släppt bibliotek för Node, PHP och Rust, medan andra har skapats av communityn.
  • Stöd för flera språk (ungefär 40-50 språk).
  • Du kan till och med använda nya språk och motorn kommer att fungera, även om du förlorar några avancerade funktioner som stoppord.
  • Mycket snabb motor. På GitHub kan man se att intags- och söktiderna var i mikrosekunder i flera fall. Det är viktigt att notera att det var ett test på en enskild maskin, eftersom nätverksfördröjning aldrig skulle tillåta så låga siffror.

Om du vill se denna motor i aktion kan du gå till denna länk (ett av företagen som använder den) och testa sökrutan.

Det finns vissa begränsningar för Sonic som sökmotor. Utvecklarna har lyft fram och diskuterat dem öppet på GitHub. Det är bra att noggrant granska denna lista och avgöra om dina användningsfall sammanfaller med deras begränsningar. Allt har begränsningar, men det är inte alltid man är medveten om dem förrän det är för sent. Jag anser att Sonic är ett utmärkt val för en sökmotor.

TNTSearch

Nu har vi ett fascinerande tillägg till denna lista. Det första intressanta är att denna funktionsrika och produktionsklara sökmotor är skriven i PHP!

Ja, PHP. Och jag säger det inte för att jag ogillar PHP, utan för att det är en kortlivad process.

Det andra intressanta är licensen. Licensen är MIT, men utvecklarna klassificerar denna programvara som PS4Ware. Om du använder TNTSearch i produktion bör du skicka ett PS4-spel till dem! Det är inte obligatoriskt, men det är ett roligt tilltag. Jag hoppas att de uppgraderar licensen till en PS5-licens i framtiden.

Jag har själv en stark bakgrund inom PHP och Laravel och jag uppskattar verkligen det arbete som dessa utvecklare har gjort. Deras webbplats är sparsam med information, men det verkar som att de är konsulter. Jag rekommenderar starkt att du kontaktar dem om du har några projekt!

Finns det några goda skäl att använda TNTSearch i dina projekt?

Ja, det finns det:

  • Koda i PHP, för PHP, av PHP. PHP-ekosystemet behöver fler högkvalitativa lösningar som denna.
  • Viktiga funktioner som suddig sökning, geo-sökning och textklassificering.
  • Lätt att ändra sökindex, vilket ger flexibilitet som saknas i många andra lösningar.
  • Stemming, BM25-rankning och anpassad tokenisering säkerställer hög noggrannhet.
  • Enkel distribution.

Du kan kolla in motorns prestanda här. Om du använder PHP vill du helst stanna inom PHP-ramarna så mycket som möjligt (för att minska kostnaderna för utbildning). TNTSearch erbjuder ett värdeförslag som är svårt att tacka nej till!

Vespa

Vespa är ett omfattande och avancerat erbjudande. Det är för stort för att sammanfattas med några få ord, men jag ska göra ett försök. Vespa är en sökmotor, men att endast använda den som en vanlig sökmotor skulle vara att slösa bort dess potential.

Vespa är byggd för att hantera stora datamängder (Big Data) och tillhandahålla funktioner som drivs av maskininlärning och oändlig anpassning.

Vespa positionerar sig som en konkurrent till Elasticsearch och traditionella databaser och ger en jämförelse av vad som bör användas och när.

Ju mer fokus du har på maskininlärningsdrivna aktiviteter, desto mer relevant är Vespa. Som en ren sökmotor för små till medelstora företag tror jag inte att den har några fördelar jämfört med andra alternativ.

Om du genererar stora mängder data kontinuerligt och vill förbättra beslutsfattandet genom AI/ML, då är Vespa ett bra val:

  • Öppen källkod. Inga licensproblem eller avtal med dolda villkor. Jag rekommenderar dock att företag betalar en summa till de projekt som de använder mest (även $50/månad hjälper mycket).
  • Realtid. Vespa är verkligen realtid. Den kan inte bara bearbeta och söka data i realtid, utan även dess konfiguration kan ändras vid behov.
  • Skalbar och tolerant. Vespa är enkel att skala. Den svarar också bra på plötsliga bortfall av noder, vilket ger hög tillförlitlighet.
  • Rankning och rekommendationer. Sök-, ranknings- och Vespa-rekommendationer kan kombineras med strukturerade frågor för att ge precisa resultat.
  • AI/ML-vänlig. Vespa levereras med högkvalitativa, förutbildade ML-modeller. Du behöver inte anställa många dataforskare för att hantera din data.
  • Anpassade plugins. Det finns ett komplett utbud av API:er som hjälper utvecklare att skapa anpassade Java-plugins för att ändra hur motorn fungerar.

Vespa är enormt, vilket gör det mer lämpligt för team som har kommit längre än startnivån, oavsett om det gäller teamstorlek, tekniska kunskaper, infrastruktur, datavolymer eller något annat. För det segmentet är Vespa ett bra val.

Ambar

Vissa företags sökdata är inte strukturerad och lagrad som JSON-dokument. I stället handlar det om en samling dokument i olika format, såsom Word, PDF, HTML, och så vidare. Om du har trott att det inte finns någon lösning för dig, välkomna Ambar!

En av de stora fördelarna med Ambar är dess förmåga att hantera olika filformat:

  • MS Office-filformat (.docx, .xlsx, etc.), inklusive PowerPoint, Visio och Publisher!
  • OpenOffice-filformat
  • PDF-dokument med automatisk OCR för att extrahera information.
  • Bilder
  • E-postarkivformat som PST
  • E-postmeddelanden med bilagor

Ambar kan hantera stora filer (över 30 MB), ZIP-arkiv och använder multithreading för fullt CPU-utnyttjande och snabbare resultat. Om du har flera års dokument lagrade på en server är det dags att ta fram dem och mata in allt i Ambar!

Slutsats

Sökning är kraftfullt och magiskt, och det finns överallt!

Det kan verka komplicerat, men idag finns det ingen anledning till att alla (med lite hjälp från utvecklare) inte kan dra nytta av fördelarna. Oavsett om det handlar om företag, privatpersoner eller myndigheter, erbjuder sökmotorerna i den här listan ett enkelt sätt att få tillgång till kraftfulla funktioner.

Skaffa en molnserver och installera den sökmjukvara som du tycker är intressant.