Het beste voorbeeld van het concept dat ik bedoel is vermoedelijk IMDB. Zelfs bij grove typfouten kan IMDB vaak nog moeiteloos de juiste trefwoorden naar boven halen.
Mijn vraag is: wat is het systeem erachter? Om de antwoorden die ik zelf kan verzinnen even op te sommen: een manier zou misschien zijn om grote tabellen te gebruiken en te vergelijken, of een percentage van overeenkomst met een trefwoordtabel te vergelijken. Misschien weet iemand anders een betere manier? Ik vermoed dat mensen hier slimmere manieren kennen om dit te realiseren.
Ik denk dat bijvoorbeeld Google alle woorden die ze gevonden hebben in een tabel hebben gezet, met het aantal keer gevonden, en dat ze dan met een SQL query in die tabel zoeken, naar het meest-op-lijkende resultaat.
Maar het knelpunt is dan: hoe kijk je of een woord erop lijkt? Als je bijvoorbeeld op het woord 'auto' zoekt, is het onhandig om alle lettercombinaties door elkaar te gooien en vervolgens 4*3*2 queries uit te voeren, dat kost nogal wat tijd.
Heb je een idee hoe ze dit oplossen, of zou het gewoon met brute kracht gebeuren samen met een algoritme dat de meest onlogische opties uitsluit?
Of hiermee: metaphone() - bijna hetzelfde, alleen beter (bij engelse uitspraak) levenshtein() - hiermee kan je kijken hoeveel twee strings verschillen. Dan kan je alles wat minder als x verschilt weergeven (maar dan moet je ook je hele database door)
De hele database door is geen probleem... mits het maar één keer hoeft. Ik denk dat ik inderdaad in MySQL een UDF aanmaak die het levenshtein-verschil (of zelfs damerau-levenshtein) berekent en vervolgens op die waarden ga sorteren.