mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Fix generation too long headline with ShortWords.
Per http://archives.postgresql.org/pgsql-hackers/2008-09/msg01088.php
This commit is contained in:
parent
f8c8386a08
commit
8fd07a35ba
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/tsearch/wparser_def.c,v 1.18 2009/01/01 17:23:48 momjian Exp $
|
* $PostgreSQL: pgsql/src/backend/tsearch/wparser_def.c,v 1.19 2009/01/15 16:33:28 teodor Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1921,6 +1921,7 @@ mark_hl_fragments(HeadlineParsedText *prs, TSQuery query, int highlight,
|
|||||||
}
|
}
|
||||||
pfree(covers);
|
pfree(covers);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mark_hl_words(HeadlineParsedText *prs, TSQuery query, int highlight,
|
mark_hl_words(HeadlineParsedText *prs, TSQuery query, int highlight,
|
||||||
int shortword, int min_words, int max_words)
|
int shortword, int min_words, int max_words)
|
||||||
@ -1981,12 +1982,14 @@ mark_hl_words(HeadlineParsedText *prs, TSQuery query, int highlight,
|
|||||||
if (curlen < min_words && i >= prs->curwords)
|
if (curlen < min_words && i >= prs->curwords)
|
||||||
{ /* got end of text and our cover is shoter
|
{ /* got end of text and our cover is shoter
|
||||||
* than min_words */
|
* than min_words */
|
||||||
for (i = p; i >= 0; i--)
|
for (i = p - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (!NONWORDTOKEN(prs->words[i].type))
|
if (!NONWORDTOKEN(prs->words[i].type))
|
||||||
curlen++;
|
curlen++;
|
||||||
if (prs->words[i].item && !prs->words[i].repeated)
|
if (prs->words[i].item && !prs->words[i].repeated)
|
||||||
poslen++;
|
poslen++;
|
||||||
|
if ( curlen >= max_words )
|
||||||
|
break;
|
||||||
if (NOENDTOKEN(prs->words[i].type) || prs->words[i].len <= shortword)
|
if (NOENDTOKEN(prs->words[i].type) || prs->words[i].len <= shortword)
|
||||||
continue;
|
continue;
|
||||||
if (curlen >= min_words)
|
if (curlen >= min_words)
|
||||||
|
Loading…
Reference in New Issue
Block a user