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