(Moderator)
Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
Delphi 11 Alexandria
|
Re: fuzzy matches via sql
4. Mai 2006, 10:18
Beispiel einer einfachen Levenstein-Funktion:
Delphi-Quellcode:
function LevenshteinDistance( s: string; t: string): Integer;
var
i, j, cost, h: Integer;
d: array[0..255, 0..255] of integer;
n,m: integer;
begin
n := Length(s);
m := Length(t);
for i := 0 to n do
d[i,0] := i;
for j := 0 to m do
d[0,j] := j;
for i := 1 to n do
for j := 1 to m do
begin
if s[i] = t[j] then cost := 0
else cost := 1;
h := min(d[i-1,j ] + 1, // Einfügen
d[i, j-1] + 1); // Löschen
d[i,j] := min( h,
d[i-1,j-1] + cost); // Ersetzen
end;
result := d[n,m];
end;
Wenn du diese Funktion in eine UDF verpackst, kannst du diese in einer SP verwenden.
Markus Kinzler
|
|
Zitat
|