Fixes about word with several infiniteve
authorTeodor Sigaev <teodor@sigaev.ru>
Thu, 27 Nov 2003 16:04:40 +0000 (16:04 +0000)
committerTeodor Sigaev <teodor@sigaev.ru>
Thu, 27 Nov 2003 16:04:40 +0000 (16:04 +0000)
contrib/tsearch2/query.c
contrib/tsearch2/tsvector.c

index 458c55de2798b4a6e7f767a08dc14f4aa9769d9b..c812f48b0d63ee4d3d69a520a0127d1d4c960b18 100644 (file)
@@ -278,7 +278,7 @@ pushval_morph(QPRS_STATE * state, int typeval, char *strval, int lenval, int2 we
                pushval_asis(state, VAL, prs.words[count].word, prs.words[count].len, weight);
                pfree(prs.words[count].word);
                if (count)
-                       pushquery(state, OPR, (int4) '&', 0, 0, 0);
+                       pushquery(state, OPR, (int4) '|', 0, 0, 0);
        }
        pfree(prs.words);
 
index c8002c0ab3fa72219a5c9b2b5b3fd008684c459b..ea50421eb73bed05e1dbf2b99453f4ab39cb6a8b 100644 (file)
@@ -635,8 +635,10 @@ uniqueWORD(WORD * a, int4 l)
                                        res->alen *= 2;
                                        res->pos.apos = (uint16 *) repalloc(res->pos.apos, sizeof(uint16) * res->alen);
                                }
-                               res->pos.apos[res->pos.apos[0] + 1] = LIMITPOS(ptr->pos.pos);
-                               res->pos.apos[0]++;
+                               if ( res->pos.apos[0]==0 || res->pos.apos[res->pos.apos[0]] != LIMITPOS(ptr->pos.pos) ) { 
+                                       res->pos.apos[res->pos.apos[0] + 1] = LIMITPOS(ptr->pos.pos);
+                                       res->pos.apos[0]++;
+                               }
                        }
                }
                ptr++;