aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2014-03-24 14:36:36 -0400
committerBruce Momjian <bruce@momjian.us>2014-03-24 14:37:16 -0400
commit1420f3a9827a39e5c6c998f6fa35a6fc97903145 (patch)
treecf2a72a44f59cd9dcdffb986f56b1237f627fcee /src
parentbb42e21be274a71f6868ce2fc8fae2c15c3ecf66 (diff)
downloadpostgresql-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.c5
-rw-r--r--src/test/regress/expected/tsearch.out14
-rw-r--r--src/test/regress/sql/tsearch.sql6
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,