1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-05 09:19:17 +03:00

Fix URL generation in headline. Only tag lexeme will be replaced by space.

Per http://archives.postgresql.org/pgsql-bugs/2008-12/msg00013.php
This commit is contained in:
Teodor Sigaev 2009-01-15 17:44:47 +00:00
parent 32cfb33244
commit 22abc26aaf
3 changed files with 10 additions and 7 deletions

View File

@ -533,7 +533,7 @@ genhl(HLPRSTEXT * prs)
*ptr = ' '; *ptr = ' ';
ptr++; ptr++;
} }
else else if (!wrd->skip)
{ {
if (wrd->selected) if (wrd->selected)
{ {

View File

@ -51,7 +51,8 @@ typedef struct
in:1, in:1,
replace:1, replace:1,
repeated:1, repeated:1,
unused:4, skip:1,
unused:3,
type:8, type:8,
len:16; len:16;
char *word; char *word;

View File

@ -75,11 +75,11 @@ prsd_end(PG_FUNCTION_ARGS)
#define COMPLEXTOKEN(x) ( (x)==5 || (x)==15 || (x)==16 || (x)==17 ) #define COMPLEXTOKEN(x) ( (x)==5 || (x)==15 || (x)==16 || (x)==17 )
#define ENDPUNCTOKEN(x) ( (x)==12 ) #define ENDPUNCTOKEN(x) ( (x)==12 )
#define TS_IDIGNORE(x) ( (x)==13 || (x)==14 || (x)==12 || (x)==23 ) #define TS_IDIGNORE(x) ( (x)==13 || (x)==14 || (x)==12 || (x)==23 )
#define HLIDIGNORE(x) ( (x)==5 || (x)==13 || (x)==15 || (x)==16 || (x)==17 ) #define HLIDREPLACE(x) ( (x)==13 )
#define HLIDSKIP(x) ( (x)==5 || (x)==15 || (x)==16 || (x)==17 )
#define HTMLHLIDIGNORE(x) ( (x)==5 || (x)==15 || (x)==16 || (x)==17 ) #define HTMLHLIDIGNORE(x) ( (x)==5 || (x)==15 || (x)==16 || (x)==17 )
#define NONWORDTOKEN(x) ( (x)==12 || HLIDIGNORE(x) ) #define NONWORDTOKEN(x) ( (x)==12 || HLIDREPLACE(x) || HLIDSKIP(x) )
#define NOENDTOKEN(x) ( NONWORDTOKEN(x) || (x)==7 || (x)==8 || (x)==20 || (x)==21 || (x)==22 || TS_IDIGNORE(x) ) #define NOENDTOKEN(x) ( NONWORDTOKEN(x) || (x)==7 || (x)==8 || (x)==20 || (x)==21 || (x)==22 || TS_IDIGNORE(x) )
typedef struct typedef struct
@ -369,13 +369,15 @@ prsd_headline(PG_FUNCTION_ARGS)
prs->words[i].selected = 1; prs->words[i].selected = 1;
if (highlight == 0) if (highlight == 0)
{ {
if (HLIDIGNORE(prs->words[i].type)) if (HLIDREPLACE(prs->words[i].type))
prs->words[i].replace = 1; prs->words[i].replace = 1;
else if (HLIDSKIP(prs->words[i].type))
prs->words[i].skip = 1;
} }
else else
{ {
if (HTMLHLIDIGNORE(prs->words[i].type)) if (HTMLHLIDIGNORE(prs->words[i].type))
prs->words[i].replace = 1; prs->words[i].skip = 1;
} }
prs->words[i].in = (prs->words[i].repeated) ? 0 : 1; prs->words[i].in = (prs->words[i].repeated) ? 0 : 1;