diff options
author | Bruce Momjian <bruce@momjian.us> | 2014-03-24 14:36:36 -0400 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2014-03-24 14:37:16 -0400 |
commit | 1420f3a9827a39e5c6c998f6fa35a6fc97903145 (patch) | |
tree | cf2a72a44f59cd9dcdffb986f56b1237f627fcee /src | |
parent | bb42e21be274a71f6868ce2fc8fae2c15c3ecf66 (diff) | |
download | postgresql-1420f3a9827a39e5c6c998f6fa35a6fc97903145.tar.gz postgresql-1420f3a9827a39e5c6c998f6fa35a6fc97903145.zip |
Fix ts_rank_cd() to ignore stripped lexemes
Previously, stripped lexemes got a default location and could be
considered if mixed with non-stripped lexemes.
BACKWARD INCOMPATIBILITY CHANGE
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/tsrank.c | 5 | ||||
-rw-r--r-- | src/test/regress/expected/tsearch.out | 14 | ||||
-rw-r--r-- | src/test/regress/sql/tsearch.sql | 6 |
3 files changed, 23 insertions, 2 deletions
diff --git a/src/backend/utils/adt/tsrank.c b/src/backend/utils/adt/tsrank.c index c9e71c9e21d..dcb681d085f 100644 --- a/src/backend/utils/adt/tsrank.c +++ b/src/backend/utils/adt/tsrank.c @@ -658,8 +658,9 @@ get_docrep(TSVector txt, QueryRepresentation *qr, int *doclen) } else { - dimt = POSNULL.npos; - post = POSNULL.pos; + /* ignore words without positions */ + entry++; + continue; } while (cur + dimt >= len) diff --git a/src/test/regress/expected/tsearch.out b/src/test/regress/expected/tsearch.out index 9341dbe0d77..d22d3451458 100644 --- a/src/test/regress/expected/tsearch.out +++ b/src/test/regress/expected/tsearch.out @@ -596,6 +596,20 @@ S. T. Coleridge (1772-1834) 0.1 (1 row) +SELECT ts_rank_cd(strip(to_tsvector('both stripped')), + to_tsquery('both & stripped')); + ts_rank_cd +------------ + 0 +(1 row) + +SELECT ts_rank_cd(to_tsvector('unstripped') || strip(to_tsvector('stripped')), + to_tsquery('unstripped & stripped')); + ts_rank_cd +------------ + 0 +(1 row) + --headline tests SELECT ts_headline('english', ' Day after day, day after day, diff --git a/src/test/regress/sql/tsearch.sql b/src/test/regress/sql/tsearch.sql index 9fd12076ace..fa460cd4b9b 100644 --- a/src/test/regress/sql/tsearch.sql +++ b/src/test/regress/sql/tsearch.sql @@ -165,6 +165,12 @@ Water, water, every where, S. T. Coleridge (1772-1834) '), to_tsquery('english', 'ocean')); +SELECT ts_rank_cd(strip(to_tsvector('both stripped')), + to_tsquery('both & stripped')); + +SELECT ts_rank_cd(to_tsvector('unstripped') || strip(to_tsvector('stripped')), + to_tsquery('unstripped & stripped')); + --headline tests SELECT ts_headline('english', ' Day after day, day after day, |