Database Reference
In-Depth Information
satzpaket fuzzystrmatch bereitgestellt. Betrachten wir mal die Strings bat
und fads .
SELECT levenshtein( 'bat' , 'fads' );
Die Levenshtein-Distanz ist 3, weil - verglichen mit dem String bat -zwei
Buchstaben ersetzt (b=>f, t=>d) und einer hinzugefügt werden mussten (+s).
Jede Änderung erhöht die Distanz. Die Distanz wird kleiner, je weiter wir uns
annähern. Die Distanz nimmt ab, bis sie Null erreicht (wenn beide Strings
gleich sind).
SELECT levenshtein( 'bat' , 'fad' ) fad,
levenshtein( 'bat' , 'fat' ) fat,
levenshtein( 'bat' , 'bat' ) bat;
fad | fat | bat
-----+-----+-----
2| 1| 0
Die Änderung der Groß-/Kleinschreibung kostet ebenfalls einen Punkt, d. h.,
Sie wandeln die Strings vor der Query besser in Groß- oder Kleinbuchstaben
um.
SELECT movie _ id, title FROM movies
WHERE levenshtein(lower(title), lower( 'a hard day nght' )) <= 3;
movie _ id | title
----------+--------------------
245 | A Hard Day's Night
Damit stellen Sie sicher, dass unbedeutende Unterschiede sich nicht auf die
Distanz auswirken.
Trigramm
Ein Trigramm ist eine Gruppe dreier aufeinanderfolgender Zeichen aus einem
String. Das Zusatzmodul pg _ trgm bricht einen String in soviele Trigramme
wie möglich auf.
SELECT show _ trgm( 'Avatar' );
show _ trgm
-------------------------------------
{"
a"," av","ar ",ata,ava,tar,vat}
Um einen passenden String zu finden, muss man nur die Anzahl passender
Trigramme zählen, die Strings mit den meisten Treffern sind am ähnlichsten.
Search WWH ::




Custom Search