mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Make exact distance match for FTS phrase operator
Phrase operator now requires exact distance betweens lexems instead of less-or-equal. Per discussion c19fcfec308e6ccd952cdde9e648b505@mail.gmail.com
This commit is contained in:
@ -665,10 +665,10 @@ SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <-> 2' AS "true";
|
||||
t
|
||||
(1 row)
|
||||
|
||||
SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 2' AS "true";
|
||||
true
|
||||
------
|
||||
t
|
||||
SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 2' AS "false";
|
||||
false
|
||||
-------
|
||||
f
|
||||
(1 row)
|
||||
|
||||
SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <-> 3' AS "false";
|
||||
@ -683,6 +683,12 @@ SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 3' AS "true";
|
||||
t
|
||||
(1 row)
|
||||
|
||||
SELECT to_tsvector('simple', '1 2 1 2') @@ '1 <3> 2' AS "true";
|
||||
true
|
||||
------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
SELECT to_tsvector('simple', '1 2 11 3') @@ '1 <-> 3' AS "false";
|
||||
false
|
||||
-------
|
||||
@ -897,7 +903,7 @@ SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:*');
|
||||
SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:* <-> sa:A');
|
||||
ts_rank_cd
|
||||
------------
|
||||
0.0714286
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:* <-> sa:B');
|
||||
@ -924,10 +930,10 @@ SELECT 'a:1 b:2'::tsvector @@ 'a <1> b'::tsquery AS "true";
|
||||
t
|
||||
(1 row)
|
||||
|
||||
SELECT 'a:1 b:2'::tsvector @@ 'a <2> b'::tsquery AS "true";
|
||||
true
|
||||
------
|
||||
t
|
||||
SELECT 'a:1 b:2'::tsvector @@ 'a <2> b'::tsquery AS "false";
|
||||
false
|
||||
-------
|
||||
f
|
||||
(1 row)
|
||||
|
||||
SELECT 'a:1 b:3'::tsvector @@ 'a <-> b'::tsquery AS "false";
|
||||
@ -954,10 +960,10 @@ SELECT 'a:1 b:3'::tsvector @@ 'a <2> b'::tsquery AS "true";
|
||||
t
|
||||
(1 row)
|
||||
|
||||
SELECT 'a:1 b:3'::tsvector @@ 'a <3> b'::tsquery AS "true";
|
||||
true
|
||||
------
|
||||
t
|
||||
SELECT 'a:1 b:3'::tsvector @@ 'a <3> b'::tsquery AS "false";
|
||||
false
|
||||
-------
|
||||
f
|
||||
(1 row)
|
||||
|
||||
-- tsvector editing operations
|
||||
|
@ -130,9 +130,10 @@ SELECT 'supeznova supernova'::tsvector @@ 'super:*'::tsquery AS "true";
|
||||
|
||||
--phrase search
|
||||
SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <-> 2' AS "true";
|
||||
SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 2' AS "true";
|
||||
SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 2' AS "false";
|
||||
SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <-> 3' AS "false";
|
||||
SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 3' AS "true";
|
||||
SELECT to_tsvector('simple', '1 2 1 2') @@ '1 <3> 2' AS "true";
|
||||
|
||||
SELECT to_tsvector('simple', '1 2 11 3') @@ '1 <-> 3' AS "false";
|
||||
SELECT to_tsvector('simple', '1 2 11 3') @@ '1:* <-> 3' AS "true";
|
||||
@ -180,12 +181,12 @@ SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:* <-> sa:B');
|
||||
SELECT 'a:1 b:2'::tsvector @@ 'a <-> b'::tsquery AS "true";
|
||||
SELECT 'a:1 b:2'::tsvector @@ 'a <0> b'::tsquery AS "false";
|
||||
SELECT 'a:1 b:2'::tsvector @@ 'a <1> b'::tsquery AS "true";
|
||||
SELECT 'a:1 b:2'::tsvector @@ 'a <2> b'::tsquery AS "true";
|
||||
SELECT 'a:1 b:2'::tsvector @@ 'a <2> b'::tsquery AS "false";
|
||||
SELECT 'a:1 b:3'::tsvector @@ 'a <-> b'::tsquery AS "false";
|
||||
SELECT 'a:1 b:3'::tsvector @@ 'a <0> b'::tsquery AS "false";
|
||||
SELECT 'a:1 b:3'::tsvector @@ 'a <1> b'::tsquery AS "false";
|
||||
SELECT 'a:1 b:3'::tsvector @@ 'a <2> b'::tsquery AS "true";
|
||||
SELECT 'a:1 b:3'::tsvector @@ 'a <3> b'::tsquery AS "true";
|
||||
SELECT 'a:1 b:3'::tsvector @@ 'a <3> b'::tsquery AS "false";
|
||||
|
||||
-- tsvector editing operations
|
||||
|
||||
|
Reference in New Issue
Block a user