Postgres levert een module met verschillende snaarvergelijkingsfuncties zoals soundex en metaphone. Maar je zult de levenshtein edit distance-functie willen gebruiken.
Example:
test=# SELECT levenshtein('GUMBO', 'GAMBOL');
levenshtein
-------------
2
(1 row)
De 2
is de bewerkingsafstand tussen de twee woorden. Wanneer u dit toepast op een aantal woorden en sorteert op het resultaat van de bewerkingsafstand, krijgt u het type vage overeenkomsten waarnaar u op zoek bent.
Probeer dit voorbeeld van een zoekopdracht:(met uw eigen objectnamen en gegevens natuurlijk)
SELECT *
FROM some_table
WHERE levenshtein(code, 'AB123-lHdfj') <= 3
ORDER BY levenshtein(code, 'AB123-lHdfj')
LIMIT 10
Deze zoekopdracht zegt:
Geef me de top 10 resultaten van alle gegevens uit een tabel waarbij de bewerkingsafstand tussen de codewaarde en de invoer 'AB123-lHdfj' kleiner is dan 3. U krijgt alle rijen terug waar de waarde van de code binnen 3 tekens verschilt van ' AB123-lHdfj'...
Opmerking:als u een foutmelding krijgt zoals:
function levenshtein(character varying, unknown) does not exist
Installeer de fuzzystrmatch
extensie met:
test=# CREATE EXTENSION fuzzystrmatch;