Как найти связанный текст в postgres - PullRequest
0 голосов
/ 31 марта 2019

У меня есть куча (меньше тысяч) строк в таблице 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 - текущий идентификатор строки, а $ 3 и $ 4 - произвольные ограничения (обычно $ 3 - 5, а $ 4 - 0).

В настоящее время у меня есть следующий индекс, но я понятия не имею, работает ли он.

CREATE INDEX content_gin_idx ON posts USING GIN(content gin_trgm_ops);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...