У меня есть эта функция, применяющая индекс jaccard в некоторых текстовых строках
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;
$$;
Это сообщение об ошибке: -
ОШИБКА: синтаксическая ошибка в конце строки ввода 48: FOREACH item2 В объединении ARRAY L OOP
ошибка возникает во вложенном foreach, который повторяет текстовый массив postgres 11, все массивы имеют содержимое
jadshkjashdkhaskdhasdajksdhkashdkasd kalsjdlkashdlkasd kashdjlkashdlkashdaksjdhahgasdddddddddddddddddddddddasadjkfhkasdhfkshdfkhdskfhdksfhkshdfkhsdkfhsdkfhsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaassssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaassssssssssssssssssssssssssssssssssssssssssssssdaaksuhydhfiuoasdyfiuasydbfuioshdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddiasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss