X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=rset%2Frset.c;h=648193af591673ddf41b2214f51c12a61aef2af9;hb=810bce66201f40acfd7e8577d3997e6ea385f1cf;hp=38f02e8207065fb424727b6a297ecbc8336826bb;hpb=a876f6c2860bf13e36f47c8ce938d74b4ce98b8e;p=idzebra-moved-to-github.git diff --git a/rset/rset.c b/rset/rset.c index 38f02e8..648193a 100644 --- a/rset/rset.c +++ b/rset/rset.c @@ -1,4 +1,4 @@ -/* $Id: rset.c,v 1.47 2005-06-02 11:59:54 adam Exp $ +/* $Id: rset.c,v 1.51 2005-06-09 10:39:53 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -166,7 +166,7 @@ RSET rset_create_base(const struct rset_control *sel, rset->free_list = NULL; rset->use_list = NULL; rset->hits_count = 0; - rset->hits_limit = 1000; + rset->hits_limit = 0; rset->hits_round = 1000; rset->keycontrol = kcontrol; (*kcontrol->inc)(kcontrol); @@ -277,6 +277,28 @@ void rset_get_one_term(RSET ct, TERMID *terms, int maxterms, int *curterm) } } +struct ord_list *ord_list_create(NMEM nmem) +{ + return 0; +} + +struct ord_list *ord_list_append(NMEM nmem, struct ord_list *list, + int ord) +{ + struct ord_list *n = nmem_malloc(nmem, sizeof(*n)); + n->ord = ord; + n->next = list; + return n; +} + +struct ord_list *ord_list_dup(NMEM nmem, struct ord_list *list) +{ + struct ord_list *n = ord_list_create(nmem); + for (; list; list = list->next) + n = ord_list_append(nmem, n, list->ord); + return n; +} + /** \brief Creates a TERMID entry. \param name Term/Name buffer with given length @@ -284,9 +306,12 @@ void rset_get_one_term(RSET ct, TERMID *terms, int maxterms, int *curterm) \param flags for term \param type Term Type, Z_Term_general, Z_Term_characterString,.. \param nmem memory for term. + \param ol ord list + \param reg_type register type */ TERMID rset_term_create(const char *name, int length, const char *flags, - int type, NMEM nmem) + int type, NMEM nmem, struct ord_list *ol, + int reg_type) { TERMID t; @@ -308,8 +333,10 @@ TERMID rset_term_create(const char *name, int length, const char *flags, else t->flags = nmem_strdup(nmem, flags); t->type = type; + t->reg_type = reg_type; t->rankpriv = 0; t->rset = 0; + t->ol = ord_list_dup(nmem, ol); return t; } @@ -320,7 +347,7 @@ int rset_default_read(RSFD rfd, void *buf, TERMID *term) if (rc > 0) { if (rfd->counted_items == 0 || - (rset->keycontrol->cmp)(buf, rfd->counted_buf) >= rset->scope) + (rset->keycontrol->cmp)(buf, rfd->counted_buf) > rset->scope) { memcpy(rfd->counted_buf, buf, rset->keycontrol->key_size); rfd->counted_items++;