[英]How to create GIN index with LOWER in PostgreSQL?
首先-我使用不支持ILIKE
JPA ORM(EclipseLink)。 因此,我正在尋找不區分大小寫的搜索的解決方案。 我做了以下工作:
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 (LOWER(name) gin_trgm_ops);
INSERT INTO users (name) VALUES ('User Full Name');
但是,此查詢返回用戶:
SELECT * FROM users WHERE name ILIKE '%full%';
但這不是:
SELECT * FROM users WHERE name LIKE '%full%';
那么,如何在PostgreSQL中用LOWER創建GIN索引?
我不確定我是否理解這個問題。 因為您提到GIN並插入一行,並期望通過不區分大小寫的比較返回該行,但這是一個瘋狂的猜測-也許您正在尋找citext
?。
t=# create extension citext;
CREATE EXTENSION
t=# CREATE TABLE IF NOT EXISTS users (
id SERIAL NOT NULL,
name citext NOT NULL,
PRIMARY KEY (id));
CREATE TABLE
t=# INSERT INTO users (name) VALUES ('User Full Name');
INSERT 0 1
t=# SELECT * FROM users WHERE name LIKE '%full%';
id | name
----+----------------
1 | User Full Name
(1 row)
更新
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.