Report 'too many characters in search..'
[idzebra-moved-to-github.git] / include / rset.h
index 7fc3c95..f6d4bc1 100644 (file)
@@ -1,8 +1,5 @@
-/* $Id: rset.h,v 1.54 2005-06-06 21:31:08 adam Exp $
-   Copyright (C) 1995-2005
-   Index Data ApS
-
-This file is part of the Zebra server.
+/* This file is part of the Zebra server.
+   Copyright (C) 1994-2011 Index Data
 
 Zebra is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
@@ -15,9 +12,9 @@ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 for more details.
 
 You should have received a copy of the GNU General Public License
-along with Zebra; see the file LICENSE.zebra.  If not, write to the
-Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA.
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
 */
 
 #ifndef RSET_H
@@ -40,6 +37,11 @@ struct ord_list {
     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);
+void ord_list_print(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
@@ -54,14 +56,18 @@ struct rset_term {
                       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, struct ord_list *ol);
+                        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. */
@@ -125,6 +131,7 @@ struct rset_key_control {
     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);
@@ -218,33 +225,27 @@ void rset_close(RSFD rfd);
 /** 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);
@@ -257,6 +258,17 @@ RSET rsisams_create(NMEM nmem, struct rset_key_control *kcontrol,
 
 void rset_visit(RSET rset, int level);
 
+void rset_set_hits_limit(RSET rs, zint l);
+
 YAZ_END_CDECL
 
 #endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+