X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fkcompare.c;h=ba8a6ef12a22ddd088e680e232cfe133bb4e21f1;hb=10e178572346e8c5c3caaa43b803dd10c005cb5f;hp=849d8fa05e3b80549bb0ec8845944e0bcf4d7351;hpb=b9093505b17a074e79137ed64595c8269f77d330;p=idzebra-moved-to-github.git diff --git a/index/kcompare.c b/index/kcompare.c index 849d8fa..ba8a6ef 100644 --- a/index/kcompare.c +++ b/index/kcompare.c @@ -1,10 +1,31 @@ /* - * Copyright (C) 1994-1996, Index Data I/S + * Copyright (C) 1994-1999, Index Data * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: kcompare.c,v $ - * Revision 1.21 1997-09-17 12:19:13 adam + * Revision 1.27 1999-05-12 13:08:06 adam + * First version of ISAMS. + * + * Revision 1.26 1999/02/02 14:50:54 adam + * Updated WIN32 code specific sections. Changed header. + * + * Revision 1.25 1998/06/08 15:26:06 adam + * Minor changes. + * + * Revision 1.24 1998/06/08 14:43:12 adam + * Added suport for EXPLAIN Proxy servers - added settings databasePath + * and explainDatabase to facilitate this. Increased maximum number + * of databases and attributes in one register. + * + * Revision 1.23 1998/03/05 08:45:12 adam + * New result set model and modular ranking system. Moved towards + * descent server API. System information stored as "SGML" records. + * + * Revision 1.22 1997/09/22 12:39:06 adam + * Added get_pos method for the ranked result sets. + * + * Revision 1.21 1997/09/17 12:19:13 adam * Zebra version corresponds to YAZ version 1.4. * Changed Zebra server so that it doesn't depend on global common_resource. * @@ -149,6 +170,13 @@ int key_qsort_compare (const void *p1, const void *p2) return cp1[l] - cp2[l]; } +int key_get_pos (const void *p) +{ + struct it_key key; + memcpy (&key, p, sizeof(key)); + return key.seqno; +} + struct iscz1_code_info { struct it_key key; }; @@ -269,7 +297,40 @@ ISAMC_M key_isamc_m (Res res) me->debug = atoi(res_get_def (res, "isamcDebug", "0")); - logf (LOG_LOG, "ISAMC system active"); return me; } +ISAMS_M key_isams_m (Res res) +{ + static ISAMS_M me = NULL; + + if (me) + return me; + + me = isams_getmethod (); + + me->compare_item = key_compare; + + me->code_start = iscz1_code_start; + me->code_item = iscz1_code_item; + me->code_stop = iscz1_code_stop; + + me->debug = atoi(res_get_def (res, "isamsDebug", "0")); + + return me; +} + + +int key_SU_code (int ch, char *out) +{ + int i; + for (i = 0; ch; i++) + { + if (ch > 63) + out[i] = 128 + (ch & 63); + else + out[i] = 1 + ch; + ch = ch >> 6; + } + return i; +}