Intelligente suggesties, deel 4: Aantallen, caching en Protocol Buffers 
Dit is deel 4 in een serie over de techniek uit een 'intelligente' zoekbox.
Lees verder »
- 1. Introductie en 'StartsWith'
- 2. Volledige matching en typfouten
- 3. Uitspraak en hierarchie
- 4. Aantallen, caching en Protocol Buffers
Lees verder »
Intelligente suggesties, deel 3: Uitspraak en hierarchie 
Dit is deel 3 in een serie over de techniek uit een 'intelligente' zoekbox.
Lees verder »
- 1. Introductie en 'StartsWith'
- 2. Volledige matching en typfouten
- 3. Uitspraak en hierarchie
- 4. Aantallen, caching en Protocol Buffers
Lees verder »
Intelligente suggesties, deel 2: Volledige matching en typfouten 
Dit is deel 2 in een serie over de techniek uit een 'intelligente' zoekbox.
Burkhard-Keller tree
Een BK-tree is een tree-based datastructuur om snel en efficiënt woorden te vinden die op elkaar lijken. We moeten dus eerst een algoritme hebben dat woorden kan vergelijken, en een getal kan geven aan het verschil. Hiervoor heb ik eerder al de Levenshtein-distance voor gekozen, en als implementatie de 'YetiLevenshtein' methode uit het Tenka.Text project.
De 400.000 verschillende 'keys' die we in deel 1 hebben bepaald gaan we nu rangschikken in deze boom. Als voorbeeld de volgende set:
Lees verder »
- 1. Introductie en 'StartsWith'
- 2. Volledige matching en typfouten
- 3. Uitspraak en hierarchie
- 4. Aantallen, caching en Protocol Buffers
Burkhard-Keller tree
Een BK-tree is een tree-based datastructuur om snel en efficiënt woorden te vinden die op elkaar lijken. We moeten dus eerst een algoritme hebben dat woorden kan vergelijken, en een getal kan geven aan het verschil. Hiervoor heb ik eerder al de Levenshtein-distance voor gekozen, en als implementatie de 'YetiLevenshtein' methode uit het Tenka.Text project.
De 400.000 verschillende 'keys' die we in deel 1 hebben bepaald gaan we nu rangschikken in deze boom. Als voorbeeld de volgende set:
Lees verder »
Intelligente suggesties, deel 1: Introductie en 'StartsWith' 
Dit is deel 1 in een serie over de techniek uit een 'intelligente' zoekbox.
Doelen
Lees verder »
- 1. Introductie en 'StartsWith'
- 2. Volledige matching en typfouten
- 3. Uitspraak en hierarchie
- 4. Aantallen, caching en Protocol Buffers
Doelen
- Tonen van suggesties op basis van de input van de gebruiker
- Suggesties kunnen zowel geheel matchen ('Amsterdam'), of gedeeltelijk ('Amste')
- Hierarchie moet ondersteunt worden ('Amsterdam, Noord-Holland'; 'Wibautstraat, Amsterdam')
- Het aantal woningen dient naast de suggestie getoond te worden
- Tolerant in invoer ('Köog a/d Zaan' moet 'Koog aan de Zaan' als suggestie geven)
- Op basis van uitspraak gebieden vinden die hetzelfde klinken ('Wiboudstraat' en 'Wibautstraat')
- Tolerantie voor typfouten ('Utrect')
- Omdraaien van de opdracht ('Amsterdam, Pijp' wordt 'Pijp, Amsterdam')
Lees verder »
Video! On-the-fly zoeksuggesties: Levenshtein en Soundex in de praktijk 
Naar aanleiding van mijn eerdere post over Levenshtein, Soundex en Burkhard-Keller trees, én omdat een video meer zegt dan duizend woorden: een korte impressie van het resultaat. Volgende week ga ik wat dieper in op de onderliggende algorithmes, met voorbeeldcode etc.