1

I have this function applying jaccard index in some text strings

CREATE OR REPLACE FUNCTION jaccard(INPUT text, INPUT2 text) RETURNS real
LANGUAGE plpgsql 
AS $$

DECLARE
    trigrama1 text[];
    trigrama2 text[];
    union text[];
    interception text[];
    palabra1 text;  
    palabra2 text;
    coincidencias int=0;
    inicio int=1;
    fin int=3;
    longitud int;
    longitud2 int;
    resultado real;
    item text;
    item2 text;

BEGIN

     palabra1=replace(INPUT,' ','');
     palabra2=replace(INPUT2,' ','');
     palabra1=regexp_replace(palabra1, '[^a-zA-Z]', '', 'g');
     palabra2=regexp_replace(palabra2, '[^a-zA-Z]', '', 'g');
     longitud=char_length(palabra1);

WHILE fin <= longitud LOOP
    trigrama1=array_append(trigrama1,substr(palabra1, inicio,3));
    fin=fin+1;
    inicio=inicio+1;
END LOOP;

inicio=1;
fin=3;
longitud=char_length(palabra2);

WHILE fin <= longitud LOOP
    trigrama2=array_append(trigrama2,substr(palabra2, inicio,3));
    fin=fin+1;
    inicio=inicio+1;
END LOOP;

union=array_cat(ARRAY[]::text[],trigrama1);

FOREACH item IN ARRAY trigrama2 LOOP
    coincidencias=0;
   FOREACH item2 IN ARRAY union LOOP  --line error
        IF item=item2 THEN
            coincidencias = coincidencias +1;
        END IF;
    END LOOP;
    IF coincidencias =0  THEN
        union=array_append(union,item);
    END IF;
END LOOP;

FOREACH item IN ARRAY trigrama2 LOOP
    coincidendencias=0;
    FOREACH item2 IN ARRAY trigrama1 LOOP
        IF item=item2 THEN
            coincidencias = coincidencias +1;
        END IF;
    END LOOP;
    IF coincidencias >0  THEN
        interception=array_append(interception,item);
    END IF;
END LOOP;
longitud=array_length(union,1);
longitud2=array_length(interception,1);
resultado=longitud/longitud1;

RETURN resultado;   
END;    
$$;

This is the error message :-

ERROR: Syntax Error at End of Entry Line 48: FOREACH item2 IN ARRAY union LOOP

the error happens in the nested foreach what iterates a text array postgres 11 all arrays have content

jadshkjashdkhaskdhasdajksdhkashdkasd kalsjdlkashdlkasd kashdjlkashdlkashdaksjdhahgasdddddddddddddddddddddddasadjkfhkasdhfkshdfkhdskfhdksfhkshdfkhsdkfhsdkfhsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaassssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaassssssssssssssssssssssssssssssssssssssssssssssdaaksuhydhfiuoasdyfiuasydbfuioshdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddiasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss

0 Answers0