Terug naar hoofdinhoud
Smart Search in Joomla

Smart Search in Joomla

29 april 2026

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

1.1 Wat is Smart Search?

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 verwijderd is in Joomla 5.

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 Ja (configureerbaar)
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, geplande taak
5.0 Legacy com_search verwijderd, Smart Search is de enige core-zoekfunctie
6.x Smart Search verder verfijnd, gemoderniseerde beheerinterface, snellere indexeerder

1.4 Waar vind ik Smart Search?

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

Componenten → Smart Search                (beheer van geïndexeerde items + filters)
Componenten → Smart Search → Maps         (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.

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 alle Smart Search-tabellen worden geleegd. 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, datum of populariteit.

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 artikel indexeert, kent het verschillende gewichten toe aan elk veld. Een term in de titel scoort hoger dan dezelfde term in de hoofdtekst. Daarom scoort een overeenkomst in alleen de titel hoger dan een overeenkomst alleen in de tekst.

VeldStandaardgewicht
Titel Hoog
Meta-keywords / tags Hoog
Meta description Gemiddeld
Introtekst Gemiddeld
Volledige tekst Laag

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.

4. Zoeken als bezoeker

4.1 De querysyntaxis

Smart Search ondersteunt een kleine maar handige querytaal:

SyntaxisBetekenis
joomla menus Zoekt items die zowel joomla ALS menus bevatten.
"joomla menus" Zoekt op de exacte woordgroep.
joomla -menus Zoekt op joomla maar NIET op menus.
menu* Wildcard-achtervoegsel (Joomla 4 en nieuwer).

Er is geen OR en geen ondersteuning voor haakjes. Houd zoekopdrachten eenvoudig.

4.2 Fuzziness, wat je wel en niet krijgt

Smart Search is geen typo-tolerante fuzzy zoekmachine zoals Algolia. Het biedt:

  • Stem-gebaseerde fuzziness, "running" vindt "run" via de stemmer per taal.
  • Wildcard-achtervoegsels, menu* matcht met menus, menubar en menuitem.
  • Geen edit-distance, joomal vindt geen "joomla". Een verkeerd gespelde zoekopdracht levert nul resultaten op.
  • Synoniemen, verkleinen het verschil tussen bekende varianten (zie sectie 5).

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.

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.

Joomla 4 en nieuwer bevat standaard een geplande taak genaamd Smart Search Indexer. Je kunt deze uitvoeren vanuit het onderdeel Geplande taken of direct via cron:

# 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:

  • Defragmenteert de termtabellen.
  • Verwijdert verweesde tokens.
  • Bouwt de lijst met veelvoorkomende woorden opnieuw op.

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

5.5 Synoniemen

In Componenten → Smart Search → Options → Search Tab kun je synoniemgroepen registreren zodat een zoekopdracht voor één term ook op andere termen matcht.

joomla,joomla!
nl,netherlands,holland
cms,content management system
event,evenement

Hoe het werkt:

  • Eén synoniemgroep per regel, gescheiden door komma's.
  • Tijdens het zoeken wordt elke term uitgebreid met de volledige synoniemgroep voordat gezocht wordt.
  • Synoniemen worden opgeslagen in de componentparameters, niet in een aparte tabel.

Goede toepassingen zijn merkvarianten (Joomla / Joomla!), afkortingen (CMS / content management system) en meertalige hints op een eentalige website (event / evenement).

Synoniemen worden toegepast tijdens het zoeken, niet tijdens het indexeren. Je kunt ze dus op elk moment toevoegen zonder opnieuw te indexeren.

5.6 Stopwoorden en veelvoorkomende termen

In Componenten → Smart Search → Options → Indexing Tab:

  • Common-word threshold, een term die voorkomt in meer dan X procent van de items wordt automatisch als algemeen beschouwd en grotendeels genegeerd.
  • Stopwoordenbestand, een taalspecifieke lijst die wordt meegeleverd door elke taalplugin.

In de praktijk hoef je stopwoorden zelden handmatig aan te passen. De automatische drempelwaarde werkt op de meeste websites prima.

5.7 Module voor populaire zoekopdrachten

De module Smart Search Module - Most Popular Searches toont de populairste zoekopdrachten uit #__finder_logging als klikbare suggesties. Deze module werkt alleen wanneer Gather Search Statistics is ingeschakeld. Plaats de module op de homepage zodat bezoekers een populaire zoekopdracht kunnen aanklikken in plaats van zelf te typen.

6. Meertalige Smart Search

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 Taalplugins

Elke taal bevat een eigen stemmer en stopwoordenbestand:

plugins/finder/
   language/en-GB/...
   language/nl-NL/...
   language/fr-FR/...

Zonder de juiste plugin ingeschakeld 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.

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.

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.
onFinderBeforeIndex 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->input->set('q', 'joomla smart search');

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

$results = $model->getResults();

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

8.6 Web Services API

Smart Search biedt zoekresultaten aan via de Joomla Web Services API:

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

De response is JSON met gerangschikte links, taxonomieën en routes. Combineer dit met een JavaScript-frontend of een static site generator voor headless search.

ACL blijft van toepassing. Anonieme API-aanroepen zien alleen Public-resultaten.

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 en BODY_CONTEXT.
  3. Voer daarna een Purge en herindexering uit.

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

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.

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.

9.4 Legacy Search verwarren met Smart Search

  • com_search is de legacy-component, verwijderd in Joomla 5.
  • 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.

9.5 Custom Fields en Smart Search

Dit is een veelvoorkomende bron van verouderde informatie. Sinds Joomla 4.2 indexeert Smart Search standaard ook waarden van Custom Fields. Er is geen extra extensie nodig. Joomla 6 neemt dit gedrag automatisch over.

Wat automatisch wordt geïndexeerd:

  • Waarden van velden waarvan het veldtype doorzoekbare tekst produceert, zoals Text, Textarea, Editor, List, Radio, Checkboxes, URL, Calendar enzovoort.
  • Per artikel, contact, categorie of gebruiker, overal waar Custom Fields beschikbaar zijn.
  • Het toegangsniveau van het veld wordt tijdens het zoeken gerespecteerd.

Wat niet automatisch wordt geïndexeerd:

  • Velden met Searchable = No op het tabblad Opties van het veld. Uitschakelen gebeurt per veld.
  • Binaire of niet-tekstuele veldtypes, zoals mediapaden, Color en ruwe Subform-JSON zonder rendering.
  • Custom field-types van externe plugins die de indexeer-hook niet implementeren.

Belangrijke aandachtspunten:

  • Na het inschakelen van Custom Fields op bestaande content moet je een Purge + herindexering uitvoeren zodat de waarden terechtkomen in #__finder_links_terms.
  • Een Subform-waarde wordt als JSON opgeslagen in de database. Alleen de gerenderde output wordt geïndexeerd. Override subform.php als je een andere structuur wilt indexeren.
  • Websites die vanaf een versie vóór 4.2 zijn gemigreerd kunnen nog oude workarounds gebruiken, zoals Tassos Finder of PHProberto Finder Plus. Controleer of deze extensies nog nodig zijn.

9.6 Valkuil bij SQL-velden

SQL Custom Fields die privécontent opvragen kunnen data lekken naar de zoekindex. De indexeerder draait als een gebruiker met uitgebreide rechten, waardoor alles wat de SQL-query retourneert doorzoekbaar wordt.

Controleer elk SQL Custom Field zorgvuldig voordat je Smart Search gebruikt in een multi-tenant omgeving.

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 Afstelopties voor grote websites

Voor websites met tienduizenden items zijn de standaardinstellingen vaak te agressief. Pas deze instellingen aan:

InstellingLocatieWat het doet
batch_size Smart Search Options → Indexing Aantal items per batch voordat data wordt weggeschreven.
memory_table_limit Smart Search Options → Indexing Bepaalt wanneer MEMORY-tabellen naar disk overschakelen.
max_heap_table_size MySQL-configuratie Harde limiet voor MEMORY-tabellen, verhoog deze voor grote indexen.
tmp_table_size MySQL-configuratie Gebruik samen met bovenstaande instelling.
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.

10. Verder dan Smart Search

10.1 Extensies die Smart Search verbeteren

  • Tassos Finder, indexeert Custom Fields, voegt AJAX-live-resultaten toe en biedt een betere autocomplete-interface.
  • PHProberto Finder / Octopus Finder, voegt contenttype-adapters toe voor populaire componenten zoals K2, VirtueMart, HikaShop en EasyBlog.

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.

11. Best practices en snelle referentie

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.
  • Controleer SQL Custom Fields zorgvuldig voordat je op Smart Search vertrouwt.

Cheat sheet

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      "phrase"  -exclude  word*
OVERRIDE           templates/{tpl}/html/com_finder/search/default_result.php
API                GET /api/index.php/v1/fields/com_finder/search?filter[q]=...
LEGACY             com_search is VERWIJDERD - Smart Search is de zoekmachine.

12. 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.
  • Headless-ready, volledige zoekresultaten via de Web Services API.

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.

Smart Search in Joomla
Peter Martin

Joomla en Linux specialist voor snelle, veilige en schaalbare websites.

© Peter Martin / db8 Website Support. All rights reserved.