Terug naar hoofdinhoud
Joomla Slim Zoeken gebruiken
Op deze pagina
# Topics

Joomla Slim Zoeken gebruiken

29 april 2026

Slim Zoeken (Smart Search) is de zoekmachine die standaard in Joomla zit. Het is snel, gerangschikt op relevantie, ondersteunt filters en meerdere talen, en is al geïnstalleerd, toch behandelen veel Joomla-site-eigenaren zoekfunctionaliteit nog steeds als een bijzaak.

Dit artikel legt uit hoe Smart Search echt werkt. Het behandelt de basis voor website-eigenaren en redacteuren, de praktische configuratie voor beheerders en de technische details voor ontwikkelaars. Je leert hoe de index wordt opgebouwd, hoe de query-engine resultaten rangschikt, hoe meertalige zoekopdrachten werken en hoe je Smart Search uitbreidt met je eigen contenttypes.

Smart Search is de geïndexeerde, gefacetteerde, meertalige zoekmachine binnen Joomla

Het doel is simpel: je helpen Joomla Smart Search goed genoeg te begrijpen zodat je bezoekers een zoekervaring krijgen die daadwerkelijk vindt wat ze zoeken.

1. De basis

Smart Search is Joomla's moderne zoekmachine voor websites. De component heet com_finder, daarom noemen ontwikkelaars het vaak Finder.

Smart Search:

  • Wordt standaard meegeleverd sinds Joomla 2.5.
  • Bouwt een zoekindex op in de database.
  • Zoekt in die index in plaats van direct in contenttabellen.
  • Geeft gerangschikte en filterbare resultaten terug.
  • Vervangt de oude com_search, die in Joomla 4.0 uit de core is gehaald.

De oude Search voerde live een LIKE '%keyword%'-query uit op #__content. Smart Search bouwt een echte zoekindex die bij opslaan wordt bijgewerkt.

1.2 Twee zoeksystemen, ken het verschil

Als iemand het nog heeft over "de Search-module" in Joomla, bedoelen ze vrijwel zeker Smart Search. De twee systemen verschillen enorm:

FunctieLegacy Search (com_search)Smart Search (com_finder)
Strategie Live SQL LIKE Vooraf opgebouwde index
Snelheid Traag op grote websites Snel, index-opzoekingen
Rangschikking Geen of basis Gewogen relevantie
Filters Geen Taxonomieën, datums, types
Autocomplete Nee Ja
Stemming Nee Ja, per taal
Synoniemen Nee Nee, zie sectie 5.5
Status in Joomla 6 Verwijderd De standaard

1.3 Tijdlijn van Joomla-versies

Smart Search maakt al meer dan tien jaar deel uit van Joomla. De status van zoekfunctionaliteit per Joomla-versie:

Joomla-versieStatus van zoeken
1.5 - 2.4 Alleen legacy com_search
2.5 Smart Search geïntroduceerd
3.x (tot en met 3.3.12) Beide systemen naast elkaar geleverd
4.0 Smart Search vernieuwd, namespaces, DI, CLI finder:index. Legacy com_search uit de core gehaald; sites die vanaf 3.x zijn bijgewerkt behielden de hunne, en er bleef een losse Search-extensie beschikbaar
5.0 De ondersteuning van de losse Search-extensie stopt; Smart Search is de enige zoekfunctie voor nieuwe en bijgewerkte sites
6.x Smart Search verder verfijnd, gemoderniseerde beheerinterface, snellere indexeerder

In de Joomla 6-backend bevindt Smart Search zich op verschillende plekken:

Componenten → Slim Zoeken                   (beheer van geïndexeerde items + filters)
Componenten → Slim Zoeken → Inhoudsschema's (taxonomie-structuren & nodes)
Componenten → Smart Search → Filters        (opgeslagen filtersets)
Systeem     → Beheer → Plugins              (Smart Search contentplugins)
Systeem     → Beheer → Modules              (de zoekmodule)

De frontend-zoekpagina bevindt zich op /index.php?option=com_finder, meestal gekoppeld aan een menu-item van het type Smart Search → Zoeken.

1.5 De vier bouwstenen

Smart Search bestaat uit vier onderdelen. Begrijp deze vier en de rest is configuratie.

OnderdeelRol
Indexer Doorloopt content en schrijft termen naar de index.
Index De databasetabellen die termen, links en taxonomieën opslaan.
Query-engine Verwerkt de zoekopdracht van de bezoeker en rangschikt overeenkomsten.
Plugins Adapters voor contenttypes, artikelen, contacten, categorieën, tags enzovoort.

1.6 De vijf onderdelen van een werkende configuratie

Een complete Smart Search-installatie gebruikt vijf verschillende onderdelen. Elk onderdeel kan afzonderlijk worden ingeschakeld:

OnderdeelWat het doet
Smart Search-component (com_finder) De backend-beheerinterface.
Smart Search-module (mod_finder) Het zoekveld op elke pagina.
Smart Search-menu-item De resultatenpagina.
Smart Search-plugins (plg_finder_*) Eén adapter per contenttype.
Contentplugin (plg_content_finder) Houdt de index synchroon bij tijdens opslaan.
Naar boven

2. Smart Search instellen

2.1 Schakel de plugins in

Ga naar Systeem → Beheer → Plugins en zoek op finder. Schakel alleen de plugins in die je echt nodig hebt:

PluginDoel
plg_content_finder Werkt de index automatisch bij wanneer een artikel wordt opgeslagen.
plg_finder_content Indexeert artikelen.
plg_finder_categories Indexeert categorieën.
plg_finder_contacts Indexeert contacten.
plg_finder_newsfeeds Indexeert nieuwsfeeds.
plg_finder_tags Indexeert tags.

Alleen ingeschakelde plugins dragen bij aan de index. Schakel uit wat je niet gebruikt zodat de index compact en sneller blijft.

2.2 Bouw de index voor de eerste keer op

Ga naar Componenten → Smart Search en klik op Indexeren in de toolbar.

  • Joomla doorloopt elk ingeschakeld contenttype en schrijft termen naar de indextabellen.
  • Een voortgangsbalk toont het aantal items per type.
  • De eerste uitvoering op een grote website kan enkele minuten duren. Nieuwe indexeringen na contentwijzigingen zijn incrementeel.

Je kunt de index ook via de command line opbouwen, wat PHP-time-outs voorkomt:

php cli/joomla.php finder:index

2.3 Opschonen en opnieuw opbouwen

In het onderdeel Onderhoud staat een knop Purge waarmee de indextabellen worden geleegd (#__finder_links, #__finder_links_terms, #__finder_terms, #__finder_taxonomy, #__finder_taxonomy_map en de twee tokentabellen). Opgeslagen filters, de lijst met veelvoorkomende woorden, het typeregister en het zoeklog blijven staan. Voer daarna opnieuw Indexeren uit om alles opnieuw op te bouwen.

Gebruik Purge wanneer:

  • Je contenttype-plugins hebt ingeschakeld of uitgeschakeld.
  • Je een taalinstelling hebt gewijzigd.
  • Je een grote contentopschoning hebt afgerond.
  • De rangschikking vreemd lijkt en je niet weet waarom.

2.4 Plaats de zoekmodule

Ga naar Systeem → Beheer → Modules → Nieuw → Smart Search en plaats de module op een zichtbare positie, meestal in de header.

De belangrijkste parameters zijn:

ParameterWat het bepaalt
Search Filter Een opgeslagen filter dat op elke zoekopdracht vanuit deze zoekbox wordt toegepast.
Show Label Toont het label boven het invoerveld.
Show Autocomplete JavaScript-autocomplete-suggesties terwijl de bezoeker typt.
Show Advanced Search Link Link naar de volledige resultatenpagina.
Set ItemId Forceert een menu-item-ID voor de resultatenpagina.

2.5 Maak de resultatenpagina aan

Ga naar Menu's → Hoofdmenu → Nieuw en kies het menu-itemtype Smart Search → Zoeken. De zoekmodule verstuurt zoekopdrachten naar dit menu-item.

De parameters van het menu-item bepalen:

  • Het aantal resultaten per pagina.
  • Of filter-checkboxes worden weergegeven.
  • Of beschrijvingen, afbeeldingen of metadata worden getoond.
  • Of gevonden termen worden gemarkeerd.
  • De sorteervolgorde: relevantie, titel, startdatum, adviesprijs of verkoopprijs.
Naar boven

3. Binnen de index

3.1 De Smart Search-tabellen

Smart Search slaat zijn gegevens op in een kleine set speciale tabellen:

#__finder_links             één rij per geïndexeerd item (artikel, contact, ...)
#__finder_links_terms       link ↔ term, met gewicht en context
#__finder_terms             elke unieke term in de index
#__finder_terms_common      stopwoorden ("de", "het", "en", ...) per taal
#__finder_tokens            MEMORY-engine, tijdelijke tokens tijdens indexeren
#__finder_tokens_aggregate  MEMORY-engine, geaggregeerde tokens tijdens indexeren
#__finder_taxonomy          taxonomie-structuren (Type, Categorie, Taal, ...)
#__finder_taxonomy_map      link ↔ taxonomie-node
#__finder_types             register van geïndexeerde contenttypes
#__finder_filters           opgeslagen filtersets gekoppeld aan modules of menu-items
#__finder_logging           log van zoektermen (populaire zoekopdrachten)

Er zijn twee logische lagen:

  • Links, wat geïndexeerd wordt.
  • Terms, de doorzoekbare woordenschat die met gewichten teruggekoppeld wordt naar links.

De tabellen #__finder_tokens en #__finder_tokens_aggregate gebruiken de MEMORY-storage-engine van MySQL. Ze draaien in RAM en worden tussen indexeeracties gewist. Als het indexeren van een grote website tegen max_heap_table_size aanloopt, verhoog dan deze MySQL-instelling en wijzig niet de storage-engine.

3.2 De taxonomieboom

Smart Search bouwt automatisch een taxonomie op van elk geïndexeerd item. Deze taxonomie-structuren verschijnen voor bezoekers als filter-checkboxes op de resultatenpagina:

Tak             Voorbeelden
─────────────   ────────────────────────
Type            Artikel, Categorie, Contact, Nieuwsfeed, Tag
Categorie       Websitecategorieën (hiërarchisch)
Taal            nl-NL, en-GB, *
Auteur          Gebruiker die het item heeft gemaakt
Tag             Tags op het item

3.3 Gewogen velden

Wanneer Smart Search een item indexeert, valt elk veld onder een van vijf contexten, en elke context heeft een gewichtsvermenigvuldiger die je in de componentopties kunt aanpassen. Daarom scoort een overeenkomst in de titel hoger dan een overeenkomst in de hoofdtekst.

De koppeling loopt niet per veld maar per context, en dat is belangrijk: velden die dezelfde context delen, hebben exact hetzelfde gewicht.

ContextWelke veldenStandaardvermenigvuldiger
Path
Path Text Weight Multiplier
path, alias 2.0 - de hoogste in de core
Title
Title Text Weight Multiplier
title, subtitle, id 1.7
Metadata
Metadata Weight Multiplier
meta, list_price, sale_price; de contentplugin voegt metakey, metadesc, metaauthor, author en created_by_alias toe 1.2
Body text
Body Text Weight Multiplier
summary (introtekst), body (volledige tekst) 0.7
Misc.
Misc. Text Weight Multiplier
comments 0.3

Uit die tabel volgen drie dingen die makkelijk verkeerd worden begrepen:

  • Introtekst en volledige tekst wegen even zwaar. Beide vallen onder TEXT_CONTEXT. Een trefwoord boven de readmore zetten doet niets voor de ranking - het verandert alleen wat een bezoeker als eerste ziet.
  • Meta-keywords en meta description wegen even zwaar, om dezelfde reden: het is allebei metadata.
  • De URL-alias weegt zwaarder dan de titel. Met 2.0 tegen 1.7 is de path-context het zwaarste in de index. Een nette alias met je trefwoord erin is daarmee een van de goedkoopste ranking-winsten binnen Smart Search.

Tags staan niet in deze tabel. Het zijn geen gewogen velden: een adapter geeft ze door aan addTaxonomy(), waardoor ze een filtertak worden (sectie 3.2) in plaats van iets waartegen een term scoort.

3.4 Taal en stemming

Elke geïndexeerde term krijgt een taal toegewezen. Tijdens het zoeken:

  • Bepaalt de actieve websitetaal welke stemmer wordt gebruikt.
  • Wordt "running" teruggebracht naar de stam run en matcht het ook met "run", "runs" en "running".
  • De stemmer werkt per taal, Nederlands, Engels, Frans, Duits en andere talen hebben allemaal hun eigen regels.

Stel de taal van een artikel correct in. Een Nederlands artikel dat in een Engelse index terechtkomt, gebruikt de verkeerde stemmer en krijgt daardoor een slechtere relevantiescore.

Naar boven

4. Zoeken als bezoeker

4.1 De querysyntaxis

Smart Search ondersteunt een kleine querytaal, en die is het waard om precies te kennen, want de syntaxis die mensen van Google gewend zijn geldt hier grotendeels niet. Let op: de operatoren zijn vertaalde teksten. Op een Nederlandstalige site typt een bezoeker en, of en niet:

SyntaxisBetekenis
joomla menus Zoekt items die zowel joomla als menus bevatten. Dit is de standaard.
joomla en menus Hetzelfde, maar uitgeschreven.
joomla of menus Zoekt items die één van beide woorden bevatten.
joomla niet menus Zoekt op joomla en sluit menus uit.
"joomla menus" Zoekt op de exacte woordgroep.

Twee dingen werken niet, hoewel ze in veel adviezen opduiken:

  • joomla -menus. Het minteken is geen uitsluit-operator. Gebruik niet.
  • menu*. De asterisk bereikt de query-engine nooit: de tokenizer verwijdert elk teken buiten letters, accenttekens, cijfers en aanhalingstekens, dus menu* komt binnen als de gewone term menu. Wildcards zijn in plaats daarvan een site-brede instelling, niets wat een bezoeker intypt - zie 4.2.

Haakjes bestaan niet, je kunt termen dus niet groeperen. Houd zoekopdrachten eenvoudig.

De operatoren komen uit de taalbestanden, het zijn geen vaste Engelse woorden. COM_FINDER_QUERY_OPERATOR_NOT is "not" in en-GB en "niet" in nl-NL. In welke taal de site ook draait, de operator is het woord van die taal.

4.2 Fuzziness, wat je wel en niet krijgt

Smart Search is geen typo-tolerante fuzzy zoekmachine zoals Algolia. Wat het wel biedt:

  • Stem-gebaseerde fuzziness, "running" vindt "run" via de stemmer per taal.
  • Een site-brede instelling Word Match, onder Componenten → Smart Search → Opties, met drie waarden:
    • Match exactly - de standaard. De term moet een heel geïndexeerd woord zijn.
    • Match words beginning with the search term - wordt LIKE 'term%', dus menu vindt ook menus en menubar.
    • Match words containing the search term anywhere - wordt LIKE '%term%'. Het breedst en het traagst, want de index kan niet worden gebruikt.
  • Geen edit-distance, joomal vindt geen "joomla". Een verkeerd gespelde zoekopdracht levert nul resultaten op.
  • Geen synoniemen, CMS vindt geen "content management system". Sectie 5.5 legt uit wat je in plaats daarvan kunt doen.

Omdat Word Match site-breed is, is gedeeltelijk matchen jouw beslissing en niet die van de bezoeker. Zoeken mensen steeds op enkelvouden en vinden ze niets, pas dan de instelling aan in plaats van ze te vertellen dat ze een asterisk moeten typen.

4.3 Autocomplete

Wanneer autocomplete is ingeschakeld in de module, doorzoekt Joomla #__finder_terms terwijl de bezoeker typt:

  • Suggesties komen uit geïndexeerde termen, niet uit eerdere zoekopdrachten.
  • Stopwoorden worden overgeslagen.
  • De lijst houdt rekening met de actieve taal, alleen termen in de actieve taal worden voorgesteld.

4.4 De resultatenpagina

Een standaard resultatenpagina toont:

  • Het aantal resultaten en een gepagineerde lijst.
  • De titel, klikbaar, met gemarkeerde zoektermen.
  • De beschrijving of intro, met gemarkeerde zoektermen.
  • Badges voor type, categorie en datum.
  • Een filter-sidebar voor Type, Taal, Categorie, Auteur en Tag.

Elk resultaat heeft een relevantiescore, standaard verborgen.

4.5 Filters, twee soorten

TypeHoe het wordt opgebouwd
Statische taxonomiefilters Automatisch gegenereerde checkboxen voor Type, Categorie, Tag enzovoort.
Opgeslagen filters Door beheerders gedefinieerde filtersets gekoppeld aan een module of menu-item.

Een opgeslagen filter wordt vooraf toegepast. Bijvoorbeeld: "dit zoekveld zoekt alleen binnen Events" of "deze resultatenpagina toont alleen pagina's met de tag Joomla 6".

4.6 Opgeslagen filters in detail

Ga naar Componenten → Smart Search → Filters → Nieuw. Selecteer de taxonomie-nodes die je wilt gebruiken, bijvoorbeeld Categorie: Events plus Taal: nl-NL, en sla op. Kies daarna dit filter in de dropdown van een zoekmodule of menu-item.

Veelvoorkomende toepassingen:

  • Een zoekveld per sectie, "Zoek alleen in de blog".
  • Gescheiden zoekresultaten per taal op een meertalige website.
  • Een knowledgebase-zoekfunctie die nieuwsartikelen uitsluit.
Naar boven

5. Onderhoud

5.1 De index actueel houden

Gebruik idealiter twee strategieën tegelijk:

  1. Indexeren bij opslaan, plg_content_finder indexeert één item opnieuw bij opslaan of publiceren.
  2. Geplande herindexering, een cronjob die periodiek alles opschoont en opnieuw indexeert.

Er is geen Smart Search-taakplugin in de core - plugins/task/ bevat negen plugins en geen daarvan indexeert. Het CLI-commando bestaat wel, dus stuur dat aan vanuit een systeem-cronjob:

# Elke nacht uitvoeren om 03:30
30 3 * * *  cd /var/www/site && php cli/joomla.php finder:index

5.2 Statistieken

Ga naar Componenten → Smart Search → Statistics. Deze pagina toont:

  • Het totaal aantal geïndexeerde items per type.
  • De grootte van de index.
  • Het aantal termen.
  • Recente zoekopdrachten (indien logging is ingeschakeld).

Een groeiende index gecombineerd met een dalend aantal termen wijst meestal op duplicaten of verwijderde items die nog steeds geïndexeerd zijn. Voer dan een Purge en herindexering uit.

5.3 Zoeklogging, waar bezoekers echt naar zoeken

Zet in de Smart Search-componentopties Gather Search Statistics op Yes. Joomla logt vervolgens elke zoekopdracht in #__finder_logging. Bekijk de populairste zoekopdrachten via Componenten → Smart Search → Search Terms.

Deze gegevens zijn goud waard voor SEO en contentstrategie:

  • Veelgebruikte zoekopdrachten zonder resultaten wijzen op een content gap.
  • Veelgebruikte zoekopdrachten waarbij bezoekers afhaken wijzen op slechte ranking van resultaten.

Behandel het zoeklogboek als een backlog. Elke populaire zoekopdracht zonder resultaten is een onderwerp waarover je content zou moeten schrijven.

5.4 De index optimaliseren

Ga naar Componenten → Smart Search → Maintenance → Optimise. Dit:

  • Verwijdert kapotte links en verweesde koppelingen tussen termen en links.
  • Telt opnieuw in hoeveel links elke term voorkomt en verwijdert daarna elke term die op nul uitkomt.
  • Verwijdert verweesde taxonomie-koppelingen en -nodes.
  • Voert OPTIMIZE TABLE uit op de finder-tabellen om ze te defragmenteren.

Voer Optimise uit na een grote bulkimport of een zware contentopschoning.

5.5 Synoniemen, en waarom Joomla ze niet heeft

Smart Search heeft geen ondersteuning voor synoniemen. Er is geen synoniemveld in de Smart Search-opties, geen synoniementabel in de database en geen synoniemstap in de query-parser. Een bezoeker die op CMS zoekt, vindt geen pagina die alleen maar content management system zegt.

Dat verrast mensen die Solr- of Elasticsearch-gedrag verwachten. Smart Search zoekt elke term op in #__finder_terms, en het enige dat de zoekopdracht verbreedt is de stemmer per taal plus de instelling Word Match.

Drie manieren om het gat te dichten met alleen core:

  • Word Match, in Componenten → Smart Search → Options → Smart Search kies je Match exactly (de standaard), Match words beginning with the search term of Match words containing the search term anywhere. De ruimere instellingen zorgen ervoor dat menu ook menubar vindt, maar ze verbreden elke zoekopdracht op de website, waardoor de relevantie daalt en de query trager wordt.
  • Meta Keywords, de contentplugin indexeert de Meta Keywords van een artikel in de meta-context, gewogen met Metadata Weight Multiplier (standaard 1.2). CMS, content management system in de Meta Keywords van één artikel zetten is de praktische synoniemtruc per item, en bij het opslaan van het artikel wordt het meteen opnieuw geïndexeerd.
  • Schrijf de variant in de tekst, noem de afkorting één keer in de inleiding. Dat helpt ook menselijke lezers en zoekmachines.

Heb je echt synoniemgroepen, weging per term of tolerantie voor typefouten nodig, dan heb je een externe zoekextensie of zoekmachine nodig. Core gaat het je niet geven.

5.6 Veelvoorkomende termen (de Joomla-variant van stopwoorden)

Smart Search leest tijdens het draaien geen stopwoordenbestand. Het vergelijkt elke term met de tabel #__finder_terms_common, met daarin een term, een language en een custom-vlag.

Die tabel wordt op twee manieren gevuld:

  • Bij de installatie van Smart Search worden 174 Engelse termen toegevoegd (i, me, my enzovoort) met custom = 0.
  • Bij het installeren van een taalpakket komt de plugin Extension - Finder in actie. Die leest language/<tag>/com_finder.commonwords.txt en importeert de woorden daaruit voor die taal. Alles achter een ; op een regel geldt als commentaar.

Bij het opnieuw installeren of bijwerken van een taalpakket worden alleen de rijen met custom = 0 van die taal verwijderd en opnieuw geïmporteerd. Rijen die je zelf toevoegt met custom = 1 overleven een update dus.

Een veelvoorkomende term heeft twee gevolgen:

  • Tijdens het indexeren wordt het gewicht van de term door 8 gedeeld, waardoor hij nog steeds matcht maar veel lager scoort.
  • Tijdens het zoeken wordt de term volledig uit de zoekopdracht gehaald, maar alleen wanneer Filter Common Words op Yes staat.

In Componenten → Smart Search → Options → Index vind je twee schakelaars, beide standaard op No: Filter Common Words en Filter Numeric Terms. Er is geen drempelwaarde in procenten en geen beheerscherm voor de tabel met veelvoorkomende termen, dus eigen veelvoorkomende woorden toevoegen betekent SQL schrijven.

5.7 Er is geen module voor populaire zoekopdrachten

De core levert één Smart Search-module, mod_finder, het zoekvak. Er bestaat geen module die de meest gestelde zoekopdrachten uit #__finder_logging als aanklikbare suggesties toont, en er is ook geen taalstring voor.

De gegevens zijn er wel als je zo'n blok wilt: het zoeklog vult zich zodra Gather Search Statistics aanstaat (sectie 5.3), en een paar regels in een eigen module of template-override lezen de bovenste rijen uit #__finder_logging. Het is alleen niets wat de core je kant-en-klaar geeft.

Naar boven

6.1 Indexeren per taal

Smart Search indexeert elk item onder de toegewezen taal. Items met de taalinstelling * (Alle) worden één keer geïndexeerd en matchen in elke taalzoekopdracht.

De actieve websitetaal bepaalt:

  • Welk taalfilter standaard actief is.
  • Welke stemmer op de zoekopdracht wordt toegepast.
  • Welke stopwoorden worden weggefilterd.

6.2 Waar stemmers en stopwoorden vandaan komen

Een Smart Search-taalplugin bestaat niet. De map plugins/finder/ bevat alleen contenttype-adapters: categories, contacts, content, newsfeeds en tags. Taalondersteuning bereikt de indexeerder via twee andere plekken.

WatWaar het staatHoe het gekozen wordt
Stemmers libraries/vendor/wamania/php-stemmer/, de meegeleverde Snowball-bibliotheek StemmerFactory koppelt de taalcode aan een stemmerklasse. Joomla 6 dekt Catalaans, Deens, Nederlands, Engels, Fins, Frans, Duits, Italiaans, Noors, Portugees, Roemeens, Russisch, Spaans en Zweeds.
Grieks en Chinees administrator/components/com_finder/src/Indexer/Language/ (El.php, Zh.php) Deze twee talen hebben een eigen klasse binnen com_finder, omdat ze meer nodig hebben dan alleen een stemmer.
Stopwoorden language/<tag>/com_finder.commonwords.txt Wordt geïmporteerd in #__finder_terms_common zodra je het taalpakket installeert. Zie paragraaf 5.6.

Zonder stemmer voor de actieve taal worden termen zonder stemming opgeslagen. Zoeken werkt dan nog steeds, maar "running" vindt bijvoorbeeld geen "run" meer.

6.3 Valkuilen bij meertaligheid

  • Een zoekmodule op de positie All toont resultaten uit alle talen tenzij deze gefilterd worden.
  • Gebruik een taalspecifiek menu-item voor de resultatenpagina zodat de URL binnen de actieve taal blijft.
  • Opgeslagen filters gekoppeld aan Language zijn de schoonste manier om resultaten per taal af te bakenen.

6.4 Accenten en diakritische tekens

Typ normandie in het zoekvak van een Nederlandse website en Smart Search vindt geen enkel artikel over Normandië. De kolommen #__finder_terms.term en #__finder_terms.stem zijn allebei gedeclareerd als utf8mb4_bin, een binaire collatie, terwijl de tabel zelf standaard utf8mb4_unicode_ci gebruikt. Binair betekent byte voor byte, dus e is niet ë. Joomla heeft geen instelling om dat te veranderen.

Dit doet meer pijn dan het lijkt, want bezoekers typen geen accenten. Een ë kost een lange druk op een telefoontoetsenbord, dus de meeste mensen laten hem weg, en de website geeft niets terug voor een onderwerp waar hij juist veel over te zeggen heeft.

Kijk eerst niet naar de collatie, maar naar de optie Standaardtaal onder Componenten → Smart Search → Opties. Die staat standaard op Geen. Op een website die niet meertalig is, vraagt Helper::stem() dan om de locale *, en die past bij geen enkele stemmer. Termen worden daardoor precies opgeslagen zoals ze getypt zijn: er wordt niets gevouwen en niets gestemd. Zet je die optie op je eigen taal, dan gaat de Snowball-stemmer aan, en voor de meeste talen met een Latijns schrift lost dat een deel van het probleem gratis op. De Nederlandse stemmer verwijdert bijvoorbeeld ä ë ï ö ü á é í ó ú als allereerste stap.

Twee dingen doet die optie niet:

  • Hij zet ook morfologische stemming aan, en dat is een veel grotere verandering dan het vouwen van accenten. Reizen en reis gaan dan op elkaar matchen. Vaak een verbetering, maar kies daar bewust voor in plaats van het als bijwerking te krijgen.
  • Hij dekt alleen de accenten op de lijst van die ene stemmer. ç en ô staan niet op de Nederlandse lijst, dus Curaçao en Rhône blijven onvindbaar zodra de bezoeker het accent weglaat.

Voor alles wat de stemmer niet dekt heeft com_finder een echt uitbreidingspunt, en het is hetzelfde punt dat de kern voor zichzelf gebruikt. Language::getInstance() neemt de primaire taalcode, bouwt daar de klassenaam Joomla\Component\Finder\Administrator\Indexer\Language\<Locale> mee op, en maakt die klasse aan zodra class_exists() bevestigt dat hij bestaat. Precies zo levert de kern zijn Griekse (El) en Chinese (Zh) handlers. Zet je een eigen klasse in die namespace, dan gebruikt com_finder hem.

Ik heb zo'n systeemplugin geschreven voor een reisorganisatie waarvan de bestemmingen vol accenten staan. De plugin registreert een Nl-klasse op de autoloader en vouwt accenten weg in stem(). Drie keuzes bepaalden het gedrag, en elk ervan is de moeite waard voordat je zelf iets vergelijkbaars bouwt:

KeuzeWaarom
Vouwen in stem(), tokenise() ongemoeid laten term houdt de echte spelling Normandië voor de autosuggestielijst, terwijl stem de gevouwen vorm normandie bevat. De zoekopdracht matcht op t.term = :searchTerm OR t.stem = :searchStem, dus de gevouwen zoekterm komt de gevouwen stam tegen en de lezer ziet nog steeds correct Nederlands.
De Snowball-stemmer uit laten staan De klasse overschrijft de constructor en laadt hem nooit. Accenten worden gevouwen, maar reizen en reis blijven aparte termen. Er verandert dus precies één ding, en de klant kreeg wat hij vroeg en verder niets.
Registreren op onAfterInitialise en application.before_execute onAfterInitialise wordt afgevuurd door CMSApplication. ConsoleApplication erft van Application, dus php cli/joomla.php finder:index vuurt hem nooit af. Registreer je alleen op het eerste event, dan ziet de browser er perfect uit terwijl je nachtelijke CLI-indexering stilletjes een ongevouwen index wegschrijft.

Drie beperkingen zijn het waard om hardop te noemen, omdat je ze vooraf makkelijker uitlegt dan achteraf debugt:

  • Bouw de index opnieuw op na installatie. Bestaande rijen houden de stammen waarmee ze zijn weggeschreven. Purge en herindexeer, anders geldt de verandering alleen voor content die je vanaf nu opslaat.
  • Exacte zoekopdrachten tussen aanhalingstekens blijven gevoelig voor accenten. Een zoekopdracht tussen aanhalingstekens volgt een andere tak die alleen op t.term matcht en nooit naar t.stem kijkt. In de praktijk gebruiken bezoekers zelden aanhalingstekens, maar het gedrag is er wel.
  • De autosuggestielijst verandert niet. Die matcht op t.term LIKE 'invoer%' onder dezelfde binaire collatie, dus wie normandie typt krijgt nog steeds geen suggestie. De resultatenpagina vindt de artikelen wel; het lijstje erboven blijft stil.

Ook het moment van registreren telt. Helper::stem() en Language::getInstance() bewaren hun taalobject allebei in een statische eigenschap zodra ze voor het eerst gebruikt worden. De handler moet dus geregistreerd zijn voordat het eerste token verwerkt wordt, niet pas wanneer hij nodig lijkt.

Naar boven

7. Toegangsbeheer en privacy

7.1 Toegangsniveaus

Elke geïndexeerde link slaat het toegangsniveau van het item op. Tijdens het zoeken doet Smart Search het volgende:

  1. Bepaalt de toegangsniveaus van de huidige gebruiker.
  2. Filtert links weg die de gebruiker niet mag zien.
  3. Filtert taxonomiefilters weg die alleen resultaten zouden opleveren waarvoor de gebruiker geen toegang heeft.

Een gastgebruiker ziet dus nooit artikelen die alleen toegankelijk zijn voor geregistreerde gebruikers. Dezelfde regels gelden overal binnen Joomla.

7.2 Niet gepubliceerd, gearchiveerd en verwijderd

Smart Search respecteert de publicatiestatus tijdens het indexeren en controleert deze opnieuw tijdens het zoeken:

StatusGeïndexeerd?Getoond in resultaten?
Gepubliceerd Ja Ja
Niet gepubliceerd Nee Nee
Gearchiveerd Ja Alleen indien expliciet opgevraagd
Verwijderd Nee Nee
Verlopen (publish_down) Item blijft bestaan maar wordt tijdens runtime verborgen Nee

7.3 Privacy van het zoeklogboek

Wanneer zoeklogging is ingeschakeld, sla je zoekopdrachten van bezoekers op. Behandel dit logboek als persoonsgegevens:

  • Anonimiseer IP-adressen op webserverniveau.
  • Documenteer bewaartermijnen in je privacybeleid.
  • Schakel logging uit op websites met gevoelige gegevens.
Naar boven

8. Onder de motorkap (ontwikkelaarsweergave)

8.1 De indexeringsflow

Wanneer plg_content_finder wordt uitgevoerd tijdens het opslaan, gebeurt het volgende:

onContentAfterSave
   └── Indexer::index($result)
         ├── content tokeniseren
         ├── stemmer toepassen (per taal)
         ├── stopwoorden verwijderen
         ├── gewichten berekenen per veldcontext
         ├── schrijven naar #__finder_terms
         └── koppelen aan taxonomie-nodes

Dezelfde flow wordt batchgewijs uitgevoerd tijdens een volledige herindexering, item voor item.

8.2 De queryflow

Wanneer een bezoeker zoekt, verloopt de flow als volgt:

SearchModel::getQuery()
   └── Query::tokenise(input)
         ├── Stemmer toepassen
         ├── Termen opzoeken in #__finder_terms
         ├── Matches scoren via #__finder_links_terms.weight
         ├── Taxonomie-filters toepassen via joins
         ├── ACL-filter toepassen
         └── Gerangschikte, gepagineerde lijst retourneren

De uiteindelijke SQL-query bestaat uit meerdere self-joins op #__finder_terms en #__finder_links_terms. Met de Joomla Debug-plugin kun je de volledige query bekijken als je echt alle details wilt zien.

8.3 Een Smart Search-plugin schrijven

Om items van je eigen component te indexeren, maak je een plugin aan onder plugins/finder/yourcomponent/ en laat je deze de adapter-basisklasse uitbreiden:

namespace Acme\Plugin\Finder\Yourcomponent\Extension;

use Joomla\Component\Finder\Administrator\Indexer\Adapter;
use Joomla\Component\Finder\Administrator\Indexer\Indexer;
use Joomla\Component\Finder\Administrator\Indexer\Result;

final class Yourcomponent extends Adapter
{
    protected $context    = 'Yourcomponent';
    protected $extension  = 'com_yourcomponent';
    protected $layout     = 'item';
    protected $type_title = 'Yourcomponent Item';
    protected $table      = '#__yourcomponent_items';

    protected function index(Result $item)
    {
        $item->setLanguage();
        $item->addTaxonomy('Type',     'Yourcomponent Item');
        $item->addTaxonomy('Category', $item->category);
        $item->addTaxonomy('Language', $item->language);

        $this->indexer->index($item);
    }
}

Daarna implementeer je setup(), getListQuery() en getItem() om de indexeerder van data te voorzien.

8.4 Plugin-events

Smart Search biedt een kleine set events voor extensies:

EventWanneer het wordt uitgevoerd
onFinderCategoryChangeState Een categoriestatus verandert, indexeren of de-indexeren.
onFinderChangeState De status van een item verandert.
onFinderAfterDelete Een item wordt verwijderd, verwijder de link.
onFinderAfterSave Een item wordt opgeslagen, opnieuw indexeren.
onBeforeIndex Hook voordat de indexeerder start (volledige batch).
onFinderBeforeSave Data aanpassen vlak vóór indexering.
onContentAfterSave De brug van content naar Finder.

8.5 Smart Search aanroepen vanuit PHP

Je kunt de Smart Search-query-engine rechtstreeks vanuit PHP gebruiken. Dit is handig voor modules met "gerelateerde resultaten" of aangepaste contentblokken:

use Joomla\CMS\Factory;

$app = Factory::getApplication();
$app->getInput()->set('q', 'joomla smart search');

$model = $app->bootComponent('com_finder')
    ->getMVCFactory()
    ->createModel('Search', 'Site', ['ignore_request' => false]);

$results = $model->getItems();

foreach ($results as $r) {
    echo $r->title . ' - ' . $r->route . "\n";
}

8.6 Er is geen Web Services API in de core

Smart Search wordt niet aangeboden via de Joomla Web Services API. Er bestaat geen api/components/com_finder en geen plugins/webservices/finder, dus geen enkele route komt bij de zoekmachine uit.

Dit is het waard om expliciet te zeggen, want er circuleert een geloofwaardig ogende URL voor:

GET /api/index.php/v1/fields/com_finder/search?filter[q]=joomla   <- bestaat niet

De routes onder v1/fields/... bestaan wél, maar doen iets heel anders: ze tonen de definities van aangepaste velden voor een context, en ze worden per component geregistreerd door de webservices-plugins van content, users en contact - v1/fields/content/articles, v1/fields/users, v1/fields/contacts/contact enzovoort. Er is geen context com_finder in die lijst, en zelfs als die er was, zou hij velddefinities teruggeven in plaats van zoekresultaten.

Voor headless zoeken heb je dus twee eerlijke opties:

  • Roep het model aan in PHP, zoals in 8.5, vanuit je eigen controller of een kleine component, en geef de JSON-vorm terug die je frontend wil. ACL blijft gelden, want SearchModel filtert op de weergaveniveaus van de huidige gebruiker.
  • Schrijf een eigen webservices-plugin die een route registreert en het verzoek doorgeeft aan SearchModel. Dat is hetzelfde mechanisme dat de core-plugins gebruiken, en het is weinig code.

8.7 Template overrides

De frontendlayouts bevinden zich in components/com_finder/tmpl/ en modules/mod_finder/tmpl/. Override ze in je template:

templates/your_template/html/com_finder/search/default_result.php
templates/your_template/html/mod_finder/default.php

Veelvoorkomende overrides zijn het restylen van resultaatkaarten, het toevoegen van thumbnails naast resultaten, het vervangen van de filter-sidebar door een off-canvas drawer of het aanpassen van de pagineringmarkup.

8.8 Gewichten afstemmen

De standaard veldgewichten staan in elke Finder-plugin. Om deze opnieuw te balanceren:

  1. Kopieer het pluginbestand naar een eigen custom plugin. Bewerk nooit de core.
  2. Pas de gewichtsconstanten aan die gebruikt worden in addInstruction(), zoals Indexer::TITLE_CONTEXT, TEXT_CONTEXT, META_CONTEXT, PATH_CONTEXT en MISC_CONTEXT.
  3. Voer daarna een Purge en herindexering uit.

Maak altijd een kopie. Wijzigingen in core-plugins worden bij een Joomla-update stilletjes overschreven.

Naar boven

9. Veelgemaakte fouten en valkuilen

9.1 Zoeken geeft geen resultaten terug

  • Heb je de index opgebouwd? Ga naar Componenten → Smart Search → Indexeren.
  • Zijn de contentplugins ingeschakeld (plg_finder_content en vergelijkbare plugins)?
  • Is het item gepubliceerd en ligt publish_up in het verleden?
  • Staat de taal correct ingesteld? Een Nederlandse zoekopdracht tegen een uitsluitend Engelse index levert niets op.
  • Staat er een woord met een accent in de zoekopdracht, of hoort dat er te staan? normandie matcht niet met de geïndexeerde term Normandië onder een binaire collatie. Zie paragraaf 6.4.

9.2 Zoeken is traag

Smart Search hoort snel te zijn. Als dat niet zo is:

  • Voer Optimise uit.
  • Controleer het aantal rijen in #__finder_links. Een extreem groot aantal wijst meestal op verouderde items, voer een Purge en herindexering uit.
  • Schakel contenttype-plugins uit die je niet gebruikt.
  • Controleer de MySQL-tuning, vooral innodb_buffer_pool_size.

9.3 Verouderde resultaten na wijzigingen

Dit betekent meestal dat plg_content_finder is uitgeschakeld of dat een artikel via een aangepaste opslagroute wordt verwerkt waarbij het event niet wordt uitgevoerd.

  • Schakel de plugin Content - Smart Search in.
  • Voer na bulkimports php cli/joomla.php finder:index uit.
  • com_search is de legacy-component, in Joomla 4.0 uit de core gehaald. Hij bleef bestaan als losse download, maar werd alleen ondersteund tot Joomla 5.0 uitkwam.
  • com_finder is Smart Search, de enige core-zoekfunctie in Joomla 6.

Als een tutorial verwijst naar "de Search-component", controleer dan eerst de publicatiedatum voordat je de instructies volgt.

Dit is een veelvoorkomende bron van verouderde informatie, in twee richtingen. Smart Search kan waarden van Custom Fields indexeren zonder extensie van derden, maar doet dat niet uit zichzelf: indexeren is opt-in per veld en staat standaard uit.

Je zet het aan tijdens het bewerken van het veld, onder Options → Smart Search → Search Index. Het is een keuzelijst met vier waarden, geen ja/nee-schakelaar:

WaardeWat het doet
Don't make searchable De standaard. De waarde van het veld bereikt de index nooit.
Make searchable De waarde komt in de metadata-context van het item terecht, wordt dus gevonden met een gewone zoekopdracht en gewogen met de Metadata Weight Multiplier.
Add as taxonomy De waarde wordt in plaats daarvan een filterbare taxonomietak, bruikbaar in opgeslagen filters en de geavanceerde zoekfunctie.
Make searchable and add as taxonomy Allebei.

Twee beperkingen zijn het waard om te kennen voordat je hierop gaat bouwen:

  • Slechts twee adapters doen dit: artikelen en contacten. Custom Fields op categorieën of gebruikers worden niet geïndexeerd, wat je hier ook instelt.
  • De optie Enable Custom Fields van de component zelf gaat er nog overheen. Staat die uit voor de component, dan wordt geen enkel veld geïndexeerd, ook niet als Search Index anders zegt.

Er is geen filter op veldtype. Wat het veld als waarde rendert, is wat geïndexeerd wordt. Een Text- of List-veld gedraagt zich dus zoals je verwacht, terwijl Media, Color en ruwe Subform-JSON waarden opleveren die technisch gezien wel geïndexeerd worden maar zelden nuttig zijn om op te zoeken.

9.6 De rechten-valkuil bij doorzoekbare velden

Dit deel verdient aandacht, want het is precies het omgekeerde van wat de meeste mensen aannemen.

Een doorzoekbaar Custom Field wordt geïndexeerd met de kijkrechten van het content-item, niet met het eigen toegangsniveau van het veld. Joomla zegt dat zelf, in de beschrijving onder de instelling:

Warning: When 'Make searchable' is selected, content from the field is indexed with the viewing permissions of the content item. This might lead to unexpected information disclosure.

Een veld dat is beperkt tot een groep op Special-niveau, gekoppeld aan een openbaar artikel, wordt dus vindbaar voor gasten zodra je het doorzoekbaar maakt. Het veld beperken beperkt het zoekresultaat niet. De taxonomie-tak gedraagt zich anders en draagt het toegangsniveau van het veld wél mee, waardoor dit verschil makkelijk over het hoofd wordt gezien.

Hetzelfde mechanisme verklaart de oudere waarschuwing over SQL Custom Fields: wat de query teruggeeft wordt geïndexeerd onder de rechten van het artikel. Een query die over tenants heen reikt of in privétabellen kijkt, lekt daardoor naar de zoekfunctie van iedereen die het artikel mag lezen.

Controleer elk doorzoekbaar Custom Field en elk SQL Custom Field voordat je op Smart Search vertrouwt op een site met afgeschermde content.

Praktische aandachtspunten:

  • Search Index wijzigen op een bestaand veld doet niets totdat de betrokken items opnieuw geïndexeerd zijn. Voer Indexeren opnieuw uit, of doe een Purge en bouw opnieuw op.
  • Een Subform-waarde wordt als JSON opgeslagen. Alleen de gerenderde output wordt geïndexeerd - override subform.php als je een andere vorm nodig hebt.
  • Websites die vanaf Joomla 3 zijn gemigreerd hebben soms nog een plugin van derden staan die Custom Fields indexeerde voordat de core dat kon. Kijk of je die nog nodig hebt zodra je Search Index hebt ingesteld op de velden waarop je echt zoekt.

9.7 De indexering wordt nooit voltooid

Symptomen: de indexeerpagina loopt vast of de voortgangsbalk blijft hangen.

  • Verhoog max_execution_time en memory_limit tijdens het indexeren.
  • Indexeer via de CLI, daar geldt geen PHP-time-out.
  • Werk per contenttype, schakel alle plugins uit behalve één, indexeer en herhaal dit proces.

9.8 Inregelopties voor grote websites

Op websites met tienduizenden items zijn de standaardinstellingen meestal eerder te voorzichtig dan te agressief. Joomla levert een kleine batchgrootte, laat het indexeren van woordgroepen uitstaan, en laat de limiet voor de MEMORY-tabel volgen wat MySQL toevallig toestaat. Dit zijn de instellingen die het bekijken waard zijn:

InstellingLocatieWat het doet
batch_size Smart Search Options → Index, "Indexer Batch Size" Aantal items dat de indexer per batch verwerkt. Een keuzelijst van 5 tot 300, standaard 50. Verlaag deze waarde wanneer de indexer geheugen of tijd tekortkomt, verhoog hem wanneer elke request van beide genoeg heeft.
tuplecount Smart Search Options → Index, "Search for Phrases" Staat standaard uit (waarde 1). Aanzetten (waarde 3) indexeert ook woordgroepen van twee en drie woorden. Dat geeft betere resultaten, maar vermenigvuldigt het aantal termen en de omvang van de index.
memory_table_limit Niet instelbaar, Joomla leidt de waarde af Aantal termen waarna de MEMORY-tabel met termen naar disk wordt geschreven. Joomla leest max_heap_table_size en deelt die door 800, valt terug op 7500 als die query mislukt, en gebruikt 50000 op PostgreSQL. Je stuurt dit dus via max_heap_table_size en niet via de Joomla-opties.
max_heap_table_size MySQL-configuratie Harde limiet voor MEMORY-tabellen, verhoog deze voor grote indexen. memory_table_limit stijgt automatisch mee.
tmp_table_size MySQL-configuratie MySQL hanteert de laagste van deze waarde en max_heap_table_size, verhoog ze dus samen.
innodb_buffer_pool_size MySQL-configuratie De belangrijkste instelling voor querysnelheid.
PHP memory_limit php.ini / CLI De indexeerder kan veel tokens tegelijk in RAM houden.
Naar boven

10.1 Extensies die Smart Search verbeteren

Plugins van derden kunnen Smart Search uitbreiden in plaats van vervangen. De nuttige exemplaren vallen in twee groepen: extra contenttype-adapters, die de indexeerder leren om componenten te lezen waar de kern niets van weet, en frontend-plugins, die AJAX-live-resultaten of een rijkere autocomplete toevoegen bovenop dezelfde index. Kijk in de Joomla Extensions Directory (JED) onder "Smart Search" wat er nu beschikbaar is, en controleer drie dingen voordat je installeert:

  • De extensie ondersteunt jouw Joomla-versie en de vermelding heeft het label "Uses Joomla! Update System".
  • De extensie schrijft in de #__finder-tabellen van de kern, in plaats van er een tweede index naast te bouwen.
  • De extensie is bijgewerkt sinds de laatste grote Joomla-release. Zoekadapters gaan stuk wanneer de API van de indexeerder verandert.

10.2 Wanneer je Smart Search ontgroeit

Voor 95 procent van de Joomla-websites is Smart Search meer dan voldoende. Maar wanneer je faceted commerce search, geo search of echte typo-tolerantie nodig hebt, kun je beter overstappen op een gespecialiseerde zoekmachine:

  • Algolia, gehoste instant search. Plugins sturen Joomla-content bij opslaan naar Algolia en de frontend zoekt rechtstreeks via Algolia.
  • Meilisearch, open-source, self-hosted en snel.
  • Elasticsearch / OpenSearch, zwaar maar krachtig en volledig aanpasbaar.

Stap alleen over naar een andere zoekmachine als daar een duidelijke reden voor is. Smart Search blijft voor bijna elke Joomla-website een verstandige standaardkeuze.

Naar boven

11. Best practices

Als je maar een paar dingen uit dit artikel onthoudt, laat het dan deze punten zijn:

  • Schakel alleen de contenttype-plugins in die je echt gebruikt, zo blijft de index compacter.
  • Voer altijd een volledige herindexering uit na migraties, contentopschoningen of pluginwijzigingen.
  • Plan een nachtelijke CLI-herindexering voor grote websites.
  • Schakel zoeklogging in, het is je eerlijkste rapport over ontbrekende content.
  • Stel de taal van artikelen correct in zodat de juiste stemmer gebruikt wordt.
  • Gebruik opgeslagen filters om zoekresultaten per sectie of taal af te bakenen.
  • Override default_result.php in je template in plaats van de core te wijzigen.
  • Custom Fields indexeren is opt-in per veld, en een doorzoekbaar veld erft de rechten van het artikel, niet zijn eigen. Controleer doorzoekbare en SQL Custom Fields voordat je op Smart Search vertrouwt.
Naar boven

12. In het kort

COMPONENT          Componenten → Smart Search
PLUGINS            Systeem → Plugins → "finder"
INDEX              Componenten → Smart Search → Indexeren
PURGE              Componenten → Smart Search → Maintenance → Purge
OPTIMISE           Componenten → Smart Search → Maintenance → Optimise
LOGS               Componenten → Smart Search → Search Terms
MODULE             Modules → Smart Search Module → Nieuw
RESULTATENPAGINA   Menu's → Nieuw → Smart Search → Search
OPGESLAGEN FILTER  Componenten → Smart Search → Filters
CLI INDEX          php cli/joomla.php finder:index
TABELLEN           #__finder_links / _terms / _taxonomy / _logging
QUERYSYNTAXIS      en  of  niet  "woordgroep"   (geen -exclude, geen woord*)
OVERRIDE           templates/{tpl}/html/com_finder/search/default_result.php
API                niet in de core - roep SearchModel aan in PHP, of schrijf een webservices-plugin
LEGACY             com_search is in 4.0 uit de core VERWIJDERD - Smart Search is de zoekmachine.
Naar boven

13. Samenvatting

Smart Search verandert de zoekfunctie van Joomla van een trage LIKE-query in een echte, gerangschikte, gefacetteerde en meertalige zoekmachine. Het zit standaard in elke Joomla-installatie, maar de meeste site-eigenaren schakelen het nooit echt goed in.

Smart Search biedt:

  • Snelheid, een vooraf opgebouwde index en zoekopdrachten in milliseconden.
  • Relevantie, gewogen velden, stemming en taalbewust zoeken.
  • Filters, taxonomie-filters direct uit de doos.
  • Inzicht, zoeklogs die ontbrekende content blootleggen.
  • Uitbreidbaarheid, plugins voor elk contenttype, inclusief je eigen componenten.
  • Scriptbaar: de query-engine is een gewoon model dat je vanuit PHP kunt aanroepen, dus een headless frontend is een kleine plugin verderop.

Een goede zoekfunctie is een van de goedkoopste manieren om een Joomla-website professioneler te laten aanvoelen. Bezoekers die snel vinden wat ze zoeken blijven langer, converteren vaker en komen sneller terug. Een paar uur investeren in een goede Smart Search-configuratie, de juiste plugins, een geplande herindexering, een slimme resultatenpagina en zoeklogging, betaalt zich jarenlang terug.

Als je zoekfunctie momenteel weinig bruikbare resultaten geeft, of je vermoedt dat Smart Search nooit correct is ingesteld, dan is dit een van de eerste onderdelen die je op elke Joomla-website zou moeten verbeteren.

Naar boven
Joomla Slim Zoeken gebruiken
Peter Martin
Peter Martin
Joomla Specialist

Peter is Joomla specialist en Linux admin voor snelle, veilige en schaalbare websites.

Gerelateerde artikelen