- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想了解如何在 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/
我正在尝试 speed up Postgres 中的一些文本匹配,使用 pg_trgm 扩展: CREATE TABLE test3 (id bigint, key text, value text)
关于 https://www.postgresql.org/docs/current/static/pgtrgm.html它解释了如何使用带有 gin_trgm_ops 选项的特殊 GIN 索引来促进
我有一张流动的 table create table mytable ( id serial not null primary key, text_id
django.contrib.postgres 的新 TrigramSimilarity 特性非常适合我遇到的问题。我将它用于搜索栏以查找难以拼写的拉丁名称。问题是有超过 200 万个名字,搜索时间比
我是一名优秀的程序员,十分优秀!