Fix generation of too long headline with ShortWords.
authorTeodor Sigaev <[email protected]>
Thu, 15 Jan 2009 17:05:39 +0000 (17:05 +0000)
committerTeodor Sigaev <[email protected]>
Thu, 15 Jan 2009 17:05:39 +0000 (17:05 +0000)
Per http://archives.postgresql.org/pgsql-hackers/2008-09/msg01088.php

src/backend/tsearch/wparser_def.c

index d444b76808b18ba84e4724a2d081cefe67947d43..24f371ab95dd725f6fb7cd894834016c7da9406b 100644 (file)
@@ -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)