diff options
Diffstat (limited to 'contrib/tsearch2/query.c')
-rw-r--r-- | contrib/tsearch2/query.c | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/contrib/tsearch2/query.c b/contrib/tsearch2/query.c index 9681272925..d8b8d4c80d 100644 --- a/contrib/tsearch2/query.c +++ b/contrib/tsearch2/query.c @@ -265,7 +265,11 @@ pushval_morph(QPRS_STATE * state, int typeval, char *strval, int lenval, int2 we { int4 count = 0; PRSTEXT prs; - uint32 variant, pos, cntvar=0, cntpos=0, cnt=0; + uint32 variant, + pos, + cntvar = 0, + cntpos = 0, + cnt = 0; prs.lenwords = 32; prs.curwords = 0; @@ -274,39 +278,44 @@ pushval_morph(QPRS_STATE * state, int typeval, char *strval, int lenval, int2 we parsetext_v2(findcfg(state->cfg_id), &prs, strval, lenval); - if ( prs.curwords>0 ) { + if (prs.curwords > 0) + { - while (count < prs.curwords) { + while (count < prs.curwords) + { pos = prs.words[count].pos.pos; - cntvar=0; - while(count < prs.curwords && pos==prs.words[count].pos.pos) { + cntvar = 0; + while (count < prs.curwords && pos == prs.words[count].pos.pos) + { variant = prs.words[count].nvariant; - cnt=0; - while(count < prs.curwords && pos==prs.words[count].pos.pos && variant==prs.words[count].nvariant) { - + cnt = 0; + while (count < prs.curwords && pos == prs.words[count].pos.pos && variant == prs.words[count].nvariant) + { + pushval_asis(state, VAL, prs.words[count].word, prs.words[count].len, weight); pfree(prs.words[count].word); - if ( cnt ) + if (cnt) pushquery(state, OPR, (int4) '&', 0, 0, 0); cnt++; count++; } - if ( cntvar ) + if (cntvar) pushquery(state, OPR, (int4) '|', 0, 0, 0); cntvar++; } - if (cntpos) + if (cntpos) pushquery(state, OPR, (int4) '&', 0, 0, 0); - + cntpos++; } pfree(prs.words); - } else + } + else pushval_asis(state, VALSTOP, NULL, 0, 0); } |