aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2009-01-15 17:05:39 +0000
committerTeodor Sigaev <teodor@sigaev.ru>2009-01-15 17:05:39 +0000
commit90208cc2fbc613ed7bdacd80c064de51378786c1 (patch)
tree5f1fe62cc1acdee59384e882a14b079acc638c98 /src
parent09156de6404b18cb5b68c58b3e52422d10f73cb0 (diff)
downloadpostgresql-90208cc2fbc613ed7bdacd80c064de51378786c1.tar.gz
postgresql-90208cc2fbc613ed7bdacd80c064de51378786c1.zip
Fix generation of too long headline with ShortWords.
Per http://archives.postgresql.org/pgsql-hackers/2008-09/msg01088.php
Diffstat (limited to 'src')
-rw-r--r--src/backend/tsearch/wparser_def.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/tsearch/wparser_def.c b/src/backend/tsearch/wparser_def.c
index d444b76808b..24f371ab95d 100644
--- a/src/backend/tsearch/wparser_def.c
+++ b/src/backend/tsearch/wparser_def.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/tsearch/wparser_def.c,v 1.14.2.1 2008/10/17 17:32:59 teodor Exp $
+ * $PostgreSQL: pgsql/src/backend/tsearch/wparser_def.c,v 1.14.2.2 2009/01/15 17:05:39 teodor Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1799,12 +1799,14 @@ prsd_headline(PG_FUNCTION_ARGS)
if (curlen < min_words && i >= prs->curwords)
{ /* got end of text and our cover is shoter
* than min_words */
- for (i = p; i >= 0; i--)
+ for (i = p - 1; i >= 0; i--)
{
if (!NONWORDTOKEN(prs->words[i].type))
curlen++;
if (prs->words[i].item && !prs->words[i].repeated)
poslen++;
+ if ( curlen >= max_words )
+ break;
if (NOENDTOKEN(prs->words[i].type) || prs->words[i].len <= shortword)
continue;
if (curlen >= min_words)