Encontrando strings similares com o PostgreSQL rapidamente

Eu preciso criar uma classificação de cadeias semelhantes em uma tabela.

Eu tenho a seguinte tabela

create table names (
name character varying(255)
);

Atualmente estou usandopg_trgm módulo que oferece osimilarity função, mas eu tenho um problema de eficiência. Eu criei um índice como oO manual do Postgres sugere:

CREATE INDEX trgm_idx ON names USING gist (name gist_trgm_ops);

e estou executando a seguinte consulta:

select (similarity(n1.name, n2.name)) as sim, n1.name, n2.name
from names n1, names n2
where n1.name != n2.name and similarity(n1.name, n2.name) > .8
order by sim desc;

A consulta funciona, mas é muito lenta quando você tem centenas de nomes. Além disso, talvez eu tenha esquecido um pouco de SQL, mas não entendo por que não posso usar a condiçãoand sim > .8 sem receber um erro "coluna sim não existe".

Eu gostaria de qualquer sugestão para tornar a consulta mais rápida.

questionAnswers(1)

yourAnswerToTheQuestion