1

我有一个包含两列、doc-id 和 doc-txt 的表。doc-txt 中的每个单元格包含一个文档的全文(大约 1000 个单词),并且 100k 文档在一个表中(100k 行)。我有一个关键字列表,我想在 doc-txt 中找到与每个关键字最相似的单词。PostgreSQL中的有效方法是什么?

4

1 回答 1

1

您将在列上创建一个 GiST 索引:

CREATE EXTENSION IF NOT EXISTS pg_trgm;

CREATE INDEX ON atable USING gist (doc_txt gist_trgm_ops);

现在您可以像这样执行相似性搜索:

SELECT * FROM atable
ORDER BY doc_txt <<<-> 'keyword' DESC
LIMIT 10;

这将找到 10 个最佳匹配项,并且可以由索引支持。

<<<->运算符对应于strict_word_similarity,并根据文档

strict_word_similarity功能对于查找整个单词的相似度很有用,而word_similarity更适合查找部分单词的相似度。

于 2020-10-30T16:37:51.440 回答