Zoeken (Typesense)
Full-text zoeken door alle libraries is optioneel en draait op
Typesense. Zonder werkt de server prima — de GraphQL-query search
geeft dan gewoon niets terug. Mét krijgen clients snel, typefouttolerant, meertalig zoeken op
titels, beschrijvingen en genres.
Inschakelen
-
Draai een Typesense-instantie (één per cluster).
docker-compose-local.ymltoont een werkende servicedefinitie; in Kubernetes kan de chart hem voor je deployen. -
Wijs de server ernaar:
TYPESENSE_ENABLED=trueTYPESENSE_HOST=typesenseTYPESENSE_PORT=8108 # defaultTYPESENSE_PROTOCOL=http # defaultTYPESENSE_API_KEY=<the key Typesense was started with> -
Herstart de server en draai dan eenmalig de GraphQL-mutation
reindexSearchom de initiële index op te bouwen. Tot je dat doet is bestaande media niet doorzoekbaar — alleen items die na het inschakelen worden aangeraakt zouden binnendruppelen.
De enabled-vlag wordt tijdens runtime gecontroleerd, niet in de image gebakken: dezelfde
image bedient beide modi, en zoekevents worden simpelweg geconsumeerd en weggegooid zolang de
vlag uitstaat. Je kunt TYPESENSE_ENABLED dus omzetten met alleen een herstart, zonder rebuild.
Actueel blijven
Na de initiële herindexering hoef je die nooit routinematig te draaien. De index onderhoudt zichzelf:
- nieuwe items worden geïndexeerd wanneer de scanner ze aanmaakt,
- metadataverrijking (TMDB en consorten) werkt het item bij zodra die binnenkomt,
- verwijderingen halen het item uit de index.
reindexSearch blijft het reparatiegereedschap: het bouwt opnieuw op in een verse collectie
en wisselt een alias om, zodat zoeken live blijft tijdens de rebuild. Grijp ernaar na het
inschakelen van zoeken op een bestaande database, na het terugzetten van een databaseback-up,
of als de index er ooit niet synchroon uitziet.
Een taal toevoegen of verwijderen
Zoekvelden worden per geconfigureerde taal gegenereerd (title_en, description_nl, …) en het
collectieschema ligt vast bij aanmaak, dus een taalwijziging is een kleine procedure:
- Werk
ISTER_LANGUAGESbij (bijv.en,nl,de) en herstart de server(s). - Haal metadata opnieuw op zodat de rijen van de nieuwe taal in PostgreSQL bestaan: draai de
mutation
analyzeLibrary(of een re-scan) — de index kan alleen metadata tonen die in de database bestaat. - Draai eenmalig
reindexSearch. Dat maakt een verse collectie met het nieuwe schema en wisselt de alias om.
Een taal verwijderen is hetzelfde minus stap 2: herindexeren laat de velden simpelweg vallen; er wordt niets uit PostgreSQL verwijderd.
Probleemoplossing
- Zoeken geeft helemaal niets terug — óf
TYPESENSE_ENABLEDstaat nog opfalse, óf de API-key is verkeerd, ófreindexSearchis na het inschakelen nooit gedraaid. Het serverlog toont verbindingsfouten bij het opstarten en bij elke indexeerpoging. - Nieuwe taal niet doorzoekbaar — je hebt stap 2 of 3 hierboven overgeslagen.
- De index overleeft serverherstarts, maar leeft alleen in de datamap van Typesense; raak
je dat volume kwijt, dan bouwt één
reindexSearchalles opnieuw op uit PostgreSQL. Hij is wegwerpbaar — zie Onderhoud.
Hoe het indexeren intern werkt staat beschreven in de architectuurdocumentatie.