Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Ähnlichkeitssuche: Fuzzy-Search-Unit???

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