gpt4 book ai didi

sql - Gin索引以及PostgreSQL中gin_trgm_ops和to_tsvector的区别

转载 作者:行者123 更新时间:2023-11-29 12:52:55 24 4
gpt4 key购买 nike

我想了解如何在 PostgreSQL 中使用 gin 索引进行全文搜索。我看到有两种方法可以做到这一点。例如,如果我们有一张表:

CREATE TABLE IF NOT EXISTS users (
id SERIAL NOT NULL,
name VARCHAR(512) NOT NULL,
PRIMARY KEY (id));

然后我们可以使用这样的变体创建索引:

CREATE INDEX users_name_idx ON users USING gin (name gin_trgm_ops);

CREATE INDEX users_name_idx ON users USING gin (to_tsvector('language', name));

据我了解(我可能是错的)第一个变体将文本分为三个字母标记并且不依赖于语言。第二种变体使用词干提取来返回词根列表,这就是为什么取决于语言。

我的问题 - 我的理解是否正确,在什么情况下我应该使用第一个变体,在什么情况下使用第二个变体。

最佳答案

你说的是对的。

除此之外,也许是最重要的区别,全文搜索只能搜索整个单词,而三元组索引可以用于搜索任意子字符串,也可以找到仅与搜索条件相似的结果(使用距离运算符)。

不出所料,三元组索引对于短搜索字符串表现不佳。

关于sql - Gin索引以及PostgreSQL中gin_trgm_ops和to_tsvector的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49939611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com