Postgres 9.5
Полнотекстовой поиск работает нормально в тестовой среде на моем макбуке. Но на VPS он не может найти слова с заглавными буквами. Проблема только с русским языком.
Это таблица, созданная для индексации данных с целью полнотекстового поиска:
CREATE TABLE public.tsv
(
name character varying NOT NULL,
id uuid NOT NULL,
tsv tsvector NOT NULL,
image boolean DEFAULT false,
source uuid,
"user" uuid,
CONSTRAINT tsv_pkey PRIMARY KEY (id),
CONSTRAINT source FOREIGN KEY (source)
REFERENCES public.source (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.tsv
OWNER TO postgres;
Это пример запроса, который я делаю к той таблице:
select id, name, image, type from tsv where tsv @@ to_tsquery('russian', 'кант') limit 18
На макбуке в результате я получаю то, что надо, а именно вот эту строку из базы данных:
"Кант – Пол Стретерн";
"2779061c-3b58-4684-890c-cc24e8f5cdc0";
"'1724–1804 –':7 '«долга»':42 '«категорическ':44 'Аристотел':18 'Имману':5 'Кант':1A,6,24,46 'Платон':16 'Пол':3A 'Стрем':19 'Стретерн':4A 'Философ':41 'границ':21 'действительн':33 'императива»':45 'классическ':10 'крупн':13 'легкост':48 'лиш':35 'мыслител':14 'немецк':9 'определ':20 'опрокидыва':49 'основоположник':8 'позна':32 'познан':23 'получ':36 'представлен':40 'результат':54 'сам':12 'совершен':59 'спекулятивн':51 'стал':58 'субъективн':39 'теор':52 'указа':25 'философ':11,55 'человек':29 'человеческ':22 '–':2A";
"2779061c-3b58-4684-890c-cc24e8f5cdc0"
Но абсолютно тот же запрос не находит абсолютно ту же строку, когда база данных расположена в VPS на Debian. Если я ищу слова, проиндексированные без заглавных букв - все работает ок, на английском вообще все работает ок.
Это SQL pane рабочей базы данных:
CREATE DATABASE production_v2
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
CONNECTION LIMIT = -1;
А эта - с тестовой:
CREATE DATABASE test_database
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
CONNECTION LIMIT = -1;
Предполагаю, что Debian как-то не корректно воспринимает верхний регистр. Как это поправить? Вариант "перевести все в нижний регистр еще в процессе индексации" не подходит.