Postgres全文搜索不搜索特殊单词(专有名词)

时间:2016-08-21 18:54:28

标签: postgresql

Postgres 9.5

全文搜索在测试环境中正常运行,但在生产中存在问题:当我查询特定单词(如城市的名称或标题)时,它找不到任何内容。只有俄语的问题。我想,有些配置设置或编码设置有问题。

我用两种语言存储信息:英语和俄语。

这是为了使用全文搜索而创建的表格:

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"

但完全相同的查询在生产中找不到完全相同的行。 Hovewer,如果我正在搜索普通单词(不是城市的名称或标题等),那么它会正确搜索。

这是生产数据库中的SQL窗格:

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;

位于我的mac上的测试数据库,生产位于VPS(Debian)

0 个答案:

没有答案