Sep.11

Nederlandse tijd en datum opvragen op buitenlandse server

Begin_CEST_Transparent.pngStel je wilt de Nederlandse tijd en datum weergeven onafhankelijk van het systeem waar je software op draait. Onderstaande class “nlDateTime” biedt dan een oplossing. De code houd rekening met DST (Daylight Saving Time = zomertijd).

In feite wordt de door het systeem geretourneerde tijd eerst omgezet naar UTC (Universal Time Coordinated) ook wel GMT genaamd. Vervolgens wordt er vastgesteld of we in europese zomertijd of wintertijd leven. Zomertijd gaat in op de laatste zondag van maart. Wintertijd gaat in op de laatste zondag van oktober.

Sep.04

Fonetisch ("klinkt als") zoeken

loep.jpg’t is al weer even geleden na een heerlijke vakantie in Frankrijk hoop ik weer wat frequenter artikeltjes te plaatsen.

Misschien herken je het probleem. Je wilt zoeken op een persoon met een bepaalde naam maar was het nu “Kees” of “Cees” en Janssen, Jansen, Jensen of Johnson. Dit probleem is op te lossen met een fonetisch zoek algoritme. Er zijn genoeg bedrijven die hier in het bijzonder in zijn gespecialiseerd. Als “arme” developer moet je dan echter je baas zover zien te krijgen met zo’n partij in zee te gaan en dat is voor simpele zaken als een intranet zoekfunctie niet altijd haalbaar. Geen nood, ik kwam er achter dat er meerder open source algoritmen bestaan voor dit probleem. Een van de betere tot nu toe is het zogenaamde Double Metaphone algoritme van Lawrence Phillips.

De werking komt in feite neer op het vastleggen van een fonetische primaire en een alternatieve sleutel voor een bepaald woord. Deze sleutel is maximaal 4 karakters lang en bestaat alleen uit medeklinkers. Zo is de primaire sleutel van de naam “Snoei”, “SN” en de alternatieve sleutel “XN”. De namen “Snoo”, “Snoeij” en “Snoey” hebben exact dezelfde sleutels en worden bij het fonetisch zoeken ook als resultaat meegenomen. De sleutel van een woord kunnen via het algoritme van Lawrence razendsnel worden vastgesteld. Een praktische implementatie zou zijn dat je in een database voor elk te zoeken woord de fonetische sleutels vaststeld. Bij het daadwerkelijk zoeken worden de fonetische sleutels vastgesteld van de zoekterm en deze worden middels een query tegen de database aangehouden.

Meer over de werking van het algoritme is te vinden het 6-delige artikel Implement Phonetic (“Sounds-like”) Name Search With Double Metaphone. In dit artikel worden een aantal implementaties ter beschikking gesteld voor ASP, VB Script, C++ maar ook voor C# verder zijn er diverse interessante links te vinden met betrekking tot fonetisch zoeken.