mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Do not fallback to AND for FTS phrase operator.
If there is no positional information of lexemes then phrase operator will not fallback to AND operator. This change makes needing to modify TS_execute() interface, because somewhere (in indexes, for example) positional information is unaccesible and in this cases we need to force fallback to AND. Per discussion c19fcfec308e6ccd952cdde9e648b505@mail.gmail.com
This commit is contained in:
@ -1459,13 +1459,14 @@ select * from pendtest where 'ipi:*'::tsquery @@ ts;
|
||||
|
||||
--check OP_PHRASE on index
|
||||
create temp table phrase_index_test(fts tsvector);
|
||||
insert into phrase_index_test values('A fat cat has just eaten a rat.');
|
||||
insert into phrase_index_test values ('A fat cat has just eaten a rat.');
|
||||
insert into phrase_index_test values (to_tsvector('english', 'A fat cat has just eaten a rat.'));
|
||||
create index phrase_index_test_idx on phrase_index_test using gin(fts);
|
||||
set enable_seqscan = off;
|
||||
select * from phrase_index_test where fts @@ phraseto_tsquery('english', 'fat cat');
|
||||
fts
|
||||
-------------------------------------------------
|
||||
'A' 'a' 'cat' 'eaten' 'fat' 'has' 'just' 'rat.'
|
||||
fts
|
||||
-----------------------------------
|
||||
'cat':3 'eaten':6 'fat':2 'rat':8
|
||||
(1 row)
|
||||
|
||||
set enable_seqscan = on;
|
||||
|
@ -482,7 +482,8 @@ select * from pendtest where 'ipi:*'::tsquery @@ ts;
|
||||
|
||||
--check OP_PHRASE on index
|
||||
create temp table phrase_index_test(fts tsvector);
|
||||
insert into phrase_index_test values('A fat cat has just eaten a rat.');
|
||||
insert into phrase_index_test values ('A fat cat has just eaten a rat.');
|
||||
insert into phrase_index_test values (to_tsvector('english', 'A fat cat has just eaten a rat.'));
|
||||
create index phrase_index_test_idx on phrase_index_test using gin(fts);
|
||||
set enable_seqscan = off;
|
||||
select * from phrase_index_test where fts @@ phraseto_tsquery('english', 'fat cat');
|
||||
|
Reference in New Issue
Block a user