-/* $Id: rset.h,v 1.53 2005-06-02 11:59:53 adam Exp $
- Copyright (C) 1995-2005
+/* $Id: rset.h,v 1.60 2006-07-04 14:10:28 adam Exp $
+ Copyright (C) 1995-2006
Index Data ApS
This file is part of the Zebra server.
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
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. */
int (*cmp)(const void *p1, const void *p2);
void (*key_logdump_txt) (int logmask, const void *p, const char *txt);
zint (*getseq)(const void *p);
+ zint (*get_segment)(const void *p);
int (*filter_func)(const void *p, void *data);
void *filter_data;
void (*inc)(struct rset_key_control *kc);
/** rset_count counts or estimates the keys in it*/
zint rset_count(RSET rs);
-RSET rstemp_create(NMEM nmem, struct rset_key_control *kcontrol,
- int scope, const char *temp_path, TERMID term);
-
-RSET rsnull_create(NMEM nmem, struct rset_key_control *kcontrol, TERMID term);
+RSET rset_create_temp(NMEM nmem, struct rset_key_control *kcontrol,
+ int scope, const char *temp_path, TERMID term);
-RSET rsbool_create_and(NMEM nmem, struct rset_key_control *kcontrol,
- int scope, RSET rset_l, RSET rset_r);
+RSET rset_create_null(NMEM nmem, struct rset_key_control *kcontrol, TERMID term);
-RSET rsbool_create_or(NMEM nmem, struct rset_key_control *kcontrol,
- int scope, RSET rset_l, RSET rset_r);
+RSET rset_create_not(NMEM nmem, struct rset_key_control *kcontrol,
+ int scope, RSET rset_l, RSET rset_r);
-RSET rsbool_create_not(NMEM nmem, struct rset_key_control *kcontrol,
- int scope, RSET rset_l, RSET rset_r);
+RSET rset_create_between(NMEM nmem, struct rset_key_control *kcontrol,
+ int scope, RSET rset_l, RSET rset_m, RSET rset_r,
+ RSET rset_attr);
-RSET rsbetween_create(NMEM nmem, struct rset_key_control *kcontrol,
- int scope, RSET rset_l, RSET rset_m, RSET rset_r,
- RSET rset_attr);
+RSET rset_create_or(NMEM nmem, struct rset_key_control *kcontrol,
+ int scope, TERMID termid, int no_rsets, RSET* rsets);
-RSET rsmulti_or_create(NMEM nmem, struct rset_key_control *kcontrol,
- int scope, TERMID termid, int no_rsets, RSET* rsets);
+RSET rset_create_and(NMEM nmem, struct rset_key_control *kcontrol,
+ int scope, int no_rsets, RSET* rsets);
-RSET rsmulti_and_create(NMEM nmem, struct rset_key_control *kcontrol,
- int scope, int no_rsets, RSET* rsets);
-
-RSET rsprox_create(NMEM nmem, struct rset_key_control *kcontrol,
- int scope, int rset_no, RSET *rset,
- int ordered, int exclusion, int relation, int distance);
+RSET rset_create_prox(NMEM nmem, struct rset_key_control *kcontrol,
+ int scope, int rset_no, RSET *rset,
+ int ordered, int exclusion, int relation, int distance);
RSET rsisamb_create(NMEM nmem, struct rset_key_control *kcontrol,
int scope, ISAMB is, ISAM_P pos, TERMID term);
YAZ_END_CDECL
#endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+