我在postgres表中有一堆(几千个)行。每行都有一个字段content
。我想快速找到相关的行。我的理解是postgres可以单独完成此操作,但到目前为止,我的所有努力都很缓慢。
目前,我正在执行以下操作:
SELECT SIMILARITY($1, content) AS sim, id
FROM posts
WHERE id != $2
ORDER BY sim DESC
LIMIT $3
OFFSET $4;
其中$ 1是我想查找与之相似的行的当前行内容,$ 2是当前行的ID,$ 3和$ 4是任意限制(通常$ 3是5,$ 4是0)。
目前我有以下索引,但是我不知道它是否有效。
CREATE INDEX content_gin_idx ON posts USING GIN(content gin_trgm_ops);