X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fextract.c;h=8d4cd9ca7035e4895b06ba089d811efbf89b3ea4;hb=53f91ef0ea7d588a26e90bf87ad46bdb84938d6f;hp=a5a6f6b907428c384eb5cd0120c8eb1a6e41747b;hpb=fc83d98d346711f446d9f9a29cc2ff0eee398053;p=idzebra-moved-to-github.git diff --git a/index/extract.c b/index/extract.c index a5a6f6b..8d4cd9c 100644 --- a/index/extract.c +++ b/index/extract.c @@ -1,4 +1,4 @@ -/* $Id: extract.c,v 1.217 2006-05-30 13:21:14 adam Exp $ +/* $Id: extract.c,v 1.219 2006-06-07 10:14:40 adam Exp $ Copyright (C) 1995-2006 Index Data ApS @@ -48,6 +48,25 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #endif +#define ENCODE_BUFLEN 768 +struct encode_info { +#if 0 + int sysno; /* previously written values for delta-compress */ + int seqno; + int cmd; + int prevsys; /* buffer for skipping insert/delete pairs */ + int prevseq; + int prevcmd; + int keylen; /* tells if we have an unwritten key in buf, and how long*/ +#endif + void *encode_handle; + void *decode_handle; + char buf[ENCODE_BUFLEN]; +}; + +static void encode_key_init (struct encode_info *i); +static void encode_key_write (char *k, struct encode_info *i, FILE *outf); +static void encode_key_flush (struct encode_info *i, FILE *outf); #define USE_SHELLSORT 0 @@ -126,7 +145,7 @@ static void searchRecordKey(ZebraHandle zh, if (zebra_rec_keys_rewind(reckeys)) { - int startSeq = -1; + zint startSeq = -1; const char *str; size_t slen; struct it_key key; @@ -139,7 +158,7 @@ static void searchRecordKey(ZebraHandle zh, if (key.mem[0] == ch) { - int woff; + zint woff; if (startSeq == -1) startSeq = seqno; @@ -1281,7 +1300,7 @@ void extract_rec_keys_adjust(ZebraHandle zh, int is_insert, struct it_key key_in; while(zebra_rec_keys_read(reckeys, &str, &slen, &key_in)) { - int ord = key_in.mem[0]; + int ord = CAST_ZINT_TO_INT(key_in.mem[0]); for (p = ord_list; p ; p = p->next) if (p->ord == ord) @@ -1365,7 +1384,7 @@ void extract_flushRecordKeys (ZebraHandle zh, SYSNO sysno, (char*)zh->reg->key_buf + zh->reg->key_buf_used; /* encode the ordinal value (field/use/attribute) .. */ - ch = (int) key_in.mem[0]; + ch = CAST_ZINT_TO_INT(key_in.mem[0]); zh->reg->key_buf_used += key_SU_encode(ch, (char*)zh->reg->key_buf + zh->reg->key_buf_used); @@ -1554,11 +1573,13 @@ ZEBRA_RES zebra_snippets_rec_keys(ZebraHandle zh, { char dst_buf[IT_MAX_WORD]; char *dst_term = dst_buf; - int ord, seqno; + int ord; + zint seqno; int index_type; + assert(key.len <= 4 && key.len > 2); - seqno = (int) key.mem[key.len-1]; - ord = key.mem[0]; + seqno = key.mem[key.len-1]; + ord = CAST_ZINT_TO_INT(key.mem[0]); zebraExplain_lookup_ord(zh->reg->zei, ord, &index_type, 0/* db */, 0 /* string_index */); @@ -1584,20 +1605,20 @@ void print_rec_keys(ZebraHandle zh, zebra_rec_keys_t reckeys) while (zebra_rec_keys_read(reckeys, &str, &slen, &key)) { char dst_buf[IT_MAX_WORD]; - int seqno; + zint seqno; int index_type; + int ord = CAST_ZINT_TO_INT(key.mem[0]); const char *db = 0; assert(key.len <= 4 && key.len > 2); - zebraExplain_lookup_ord(zh->reg->zei, - key.mem[0], &index_type, &db, 0); + zebraExplain_lookup_ord(zh->reg->zei, ord, &index_type, &db, 0); - seqno = (int) key.mem[key.len-1]; + seqno = key.mem[key.len-1]; zebra_term_untrans(zh, index_type, dst_buf, str); - yaz_log(YLOG_LOG, "ord=" ZINT_FORMAT " seqno=%d term=%s", - key.mem[0], seqno, dst_buf); + yaz_log(YLOG_LOG, "ord=%d seqno=" ZINT_FORMAT + " term=%s", ord, seqno, dst_buf); } } } @@ -1868,7 +1889,7 @@ void extract_flushSortKeys (ZebraHandle zh, SYSNO sysno, while (zebra_rec_keys_read(reckeys, &str, &slen, &key_in)) { - int ord = (int) key_in.mem[0]; + int ord = CAST_ZINT_TO_INT(key_in.mem[0]); sortIdx_type(sortIdx, ord); if (cmd == 1) @@ -1881,21 +1902,10 @@ void extract_flushSortKeys (ZebraHandle zh, SYSNO sysno, void encode_key_init (struct encode_info *i) { - i->sysno = 0; - i->seqno = 0; - i->cmd = -1; - i->prevsys=0; - i->prevseq=0; - i->prevcmd=-1; - i->keylen=0; i->encode_handle = iscz1_start(); i->decode_handle = iscz1_start(); } -/* this is the old encode_key_write - * may be deleted once we are confident that the new works - * HL 15-oct-2002 - */ void encode_key_write (char *k, struct encode_info *i, FILE *outf) { struct it_key key;