【发布时间】:2018-03-04 02:19:22
【问题描述】:
我有下一张表和数据:
/* script for people table, with field tsvector and gin */
CREATE TABLE public.people (
id INTEGER,
name VARCHAR(30),
lastname VARCHAR(30),
complete TSVECTOR
)
WITH (oids = false);
CREATE INDEX idx_complete ON public.people
USING gin (complete);
/* data for people table */
INSERT INTO public.people ("id", "name", "lastname", "complete")
VALUES
(1, 'MICHAEL', 'BRYANT BRYANT', '''bryant'':2,3 ''michael'':1'),
(2, 'HENRY STEVEN', 'BUSH TIESSEN', '''bush'':3 ''henri'':1 ''steven'':2 ''tiessen'':4'),
(3, 'WILLINGTON STEVEN', 'STEPHENS FLINN', '''flinn'':4 ''stephen'':3 ''steven'':2 ''willington'':1'),
(4, 'BRET', 'MARTINEZ AROCH', '''aroch'':3 ''bret'':1 ''martinez'':2'),
(5, 'TERENCE BERT', 'CAVALIERE ENRON', '''bert'':2 ''cavalier'':3 ''terenc'':1');
我需要根据tsvector 字段检索姓名和姓氏。其实我有疑问:
SELECT * FROM people WHERE complete @@ to_tsquery('WILLINGTON & FLINN');
结果是对的(第三条记录)。但是如果我尝试使用
SELECT * FROM people WHERE complete @@ to_tsquery('STEVEN & FLINN');
/* the same record! */
我没有结果。为什么?我能做什么?
【问题讨论】:
-
您使用的是哪个版本?在 sqlfiddle 上快速运行但无法重现:sqlfiddle.com/#!15/2439d3/1
标签: postgresql full-text-search