Registriert seit: 6. Apr 2005
10.109 Beiträge
|
Re: Ähnlichkeitssuche: Fuzzy-Search-Unit???
18. Apr 2005, 07:45
Hier eine Standard-Umformung für das Problem mit der abgesicherten Laufvariablen.
Delphi-Quellcode:
FUNCTION NGramMatch ( TextPara, SearchStr : String;
SearchStrLen, NGramLen : Integer;
VAR MaxMatch : Integer ) : Integer;
VAR NGram : String[8];
NGramCount : Integer;
i, j, delta, Count : Integer;
BEGIN
NGramCount:=SearchStrLen-NGramLen+1;
Count:=0;
MaxMatch:=0;
delta := 0;
FOR j:=1 TO NGramCount DO
BEGIN
i := j + delta;
NGram :=Copy(SearchStr,i,NGramLen);
IF (NGram[NGramLen-1]=' ') AND (NGram[1]<>' ') THEN
Inc(delta, NGramLen-3) (* Wird in der Schleife noch erhoeht! *)
ELSE
BEGIN
Inc(MaxMatch,NGramLen);
IF Pos(NGram,TextPara)>0 THEN
Inc(Count);
END;
END;
NGramMatch:=Count*NGramLen;
END;
Have fun.
|
|
Zitat
|