summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2009-01-15 17:44:18 +0000
committerTeodor Sigaev <teodor@sigaev.ru>2009-01-15 17:44:18 +0000
commit32cfb33244774be5d64174d15d705f5dffaccecf (patch)
tree014f57955359c2c45aa4b8ee99ea16df0fce55e7
parent963b87c50b1c64cdd04880577c921cb15e09aaa5 (diff)
Fix generation of too long headline with ShortWords.
Per http://archives.postgresql.org/pgsql-hackers/2008-09/msg01088.php
-rw-r--r--contrib/tsearch2/wparser_def.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/contrib/tsearch2/wparser_def.c b/contrib/tsearch2/wparser_def.c
index f1f168de905..8bb4d3c7687 100644
--- a/contrib/tsearch2/wparser_def.c
+++ b/contrib/tsearch2/wparser_def.c
@@ -301,12 +301,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)