X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=include%2Frset.h;h=12e2e077473b08bd0de96e1de2f8b47162267576;hp=23f7d0d5870ee3a6c4c04b9cec8b5dce196b9bd0;hb=ecb3935e78cd9bcfdebafdee0834cfb1060d7b5e;hpb=2cb08a89ee65d8ae2646b91dcf27bc3883759691 diff --git a/include/rset.h b/include/rset.h index 23f7d0d..12e2e07 100644 --- a/include/rset.h +++ b/include/rset.h @@ -1,4 +1,4 @@ -/* $Id: rset.h,v 1.52 2005-05-24 11:35:41 adam Exp $ +/* $Id: rset.h,v 1.58 2006-05-10 08:13:18 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -32,30 +32,44 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA YAZ_BEGIN_CDECL -typedef struct rsfd *RSFD; /* Rset "file descriptor" */ -typedef struct rset *RSET; /* Result set */ +typedef struct rsfd *RSFD; +typedef struct rset *RSET; +struct ord_list { + int ord; + struct ord_list *next; +}; + +struct ord_list *ord_list_create(NMEM nmem); +struct ord_list *ord_list_append(NMEM nmem, struct ord_list *list, int ord); +struct ord_list *ord_list_dup(NMEM nmem, struct ord_list *list); /** * rset_term is all we need to know of a term to do ranking etc. * As far as the rsets are concerned, it is just a dummy pointer to * be passed around. */ - struct rset_term { - /** the term itself */ - char *name; - char *flags; - int type; - /** the rset corresponding to this term */ - RSET rset; - /** private stuff for the ranking algorithm */ - void *rankpriv; + char *name; /** the term itself in internal encoding (UTF-8/raw) */ + char *flags; /** flags for rank method */ + int type; /** Term_type from RPN Query. Actually this + is Z_Term_general, Z_Term_numeric, + Z_Term_characterString, .. + This info is used to return encoded term back for + search-result-1 . + */ + int reg_type; /** register type */ + RSET rset; /** the rset corresponding to this term */ + void *rankpriv;/** private stuff for the ranking algorithm */ + zint hits_limit;/** limit for hits if > 0 */ + char *ref_id; /** reference for this term */ + struct ord_list *ol; }; typedef struct rset_term *TERMID; 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, zint hits_limit, const char *ref_id); /** rsfd is a "file descriptor" for reading from a rset */ struct rsfd { /* the stuff common to all rsfd's. */ @@ -103,13 +117,6 @@ int rset_default_forward(RSFD rfd, void *buf, TERMID *term, /** rset_default_read implements a generic read */ int rset_default_read(RSFD rfd, void *buf, TERMID *term); -/** rset_get_no_terms is a getterms function for those that don't have any */ -void rset_get_no_terms(RSET ct, TERMID *terms, int maxterms, int *curterm); - -/** - * rset_get_one_term is a getterms function for those rsets that have - * exactly one term, like all rsisamX types. - */ void rset_get_one_term(RSET ct,TERMID *terms,int maxterms,int *curterm); /** @@ -145,15 +152,13 @@ typedef struct rset { const struct rset_control *control; struct rset_key_control *keycontrol; - int refcount; /* reference count */ - void *priv; /* stuff private to the given type of rset */ - NMEM nmem; /* nibble memory for various allocs */ - char my_nmem; /* Should the nmem be destroyed with the rset? */ - /* 1 if created with it, 0 if passed from above */ - RSFD free_list; /* all rfd's allocated but not currently in use */ - RSFD use_list; /* all rfd's in use */ - int scope; /* On what level do we count hits and compare them? */ - TERMID term; /* the term thing for ranking etc */ + int refcount; /* reference count */ + void *priv; /* stuff private to the given type of rset */ + NMEM nmem; /* nibble memory for various allocs */ + RSFD free_list; /* all rfd's allocated but not currently in use */ + RSFD use_list; /* all rfd's in use */ + int scope; /* On what level do we count hits and compare them? */ + TERMID term; /* the term thing for ranking etc */ int no_children; RSET *children; zint hits_limit; @@ -263,3 +268,11 @@ void rset_visit(RSET rset, int level); YAZ_END_CDECL #endif +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +