Thema: Delphi fuzzy matches via sql

Einzelnen Beitrag anzeigen

mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: fuzzy matches via sql

  Alt 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
  Mit Zitat antworten Zitat