X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fextract.c;h=dcd42068311279b31e09a39ae26d60c654ad5308;hb=dbfe7852bd2cc333d4ab7582bbffbcc7c05fb091;hp=e7b79aaa802100ac9d0121fa4507a62c2f5ec5b3;hpb=3e7372e15b55113d4d29582fc30e7e3a398161fc;p=idzebra-moved-to-github.git diff --git a/index/extract.c b/index/extract.c index e7b79aa..dcd4206 100644 --- a/index/extract.c +++ b/index/extract.c @@ -1,4 +1,4 @@ -/* $Id: extract.c,v 1.191 2005-08-19 11:03:53 adam Exp $ +/* $Id: extract.c,v 1.195 2005-09-16 09:58:38 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -43,6 +43,8 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #define USE_SHELLSORT 0 +#define REC_MULTI_SKIP 0 + #if USE_SHELLSORT static void shellsort(void *ar, int r, size_t s, int (*cmp)(const void *a, const void *b)) @@ -569,6 +571,7 @@ static int file_extract_record(ZebraHandle zh, recordAttr = rec_init_attr (zh->reg->zei, rec); +#if REC_MULTI_SKIP if (!force_update && recordAttr->runNumber == zebraExplain_runNumberIncrement (zh->reg->zei, 0)) { @@ -581,6 +584,7 @@ static int file_extract_record(ZebraHandle zh, logRecord (zh); return 1; } +#endif /* flush old keys for sort&search etc. */ delkeys.buf_used = rec->size[recInfo_delKeys]; delkeys.buf = rec->info[recInfo_delKeys]; @@ -1044,6 +1048,7 @@ ZEBRA_RES buffer_extract_record (ZebraHandle zh, recordAttr = rec_init_attr (zh->reg->zei, rec); +#if REC_MULTI_SKIP if (!force_update) { if (recordAttr->runNumber == zebraExplain_runNumberIncrement (zh->reg->zei, 0)) @@ -1057,6 +1062,7 @@ ZEBRA_RES buffer_extract_record (ZebraHandle zh, return ZEBRA_FAIL; } } +#endif delkeys.buf_used = rec->size[recInfo_delKeys]; delkeys.buf = rec->info[recInfo_delKeys]; @@ -1526,13 +1532,11 @@ void extract_add_it_key (ZebraHandle zh, ZEBRA_RES zebra_snippets_rec_keys(ZebraHandle zh, struct recKeys *reckeys, zebra_snippets *snippets) { - void *decode_handle = iscz1_start(); + void *decode_handle = iscz1_start(); int off = 0; int seqno = 0; NMEM nmem = nmem_create(); - yaz_log(YLOG_LOG, "zebra_rec_keys_snippets buf=%p sz=%d", reckeys->buf, - reckeys->buf_used); assert(reckeys->buf); while (off < reckeys->buf_used) { @@ -1541,14 +1545,20 @@ ZEBRA_RES zebra_snippets_rec_keys(ZebraHandle zh, struct recKeys *reckeys, char *dst = (char*) &key; char dst_buf[IT_MAX_WORD]; char *dst_term = dst_buf; + int index_type = 0, ord; iscz1_decode(decode_handle, &dst, &src); assert(key.len <= 4 && key.len > 2); seqno = (int) key.mem[key.len-1]; - - zebra_term_untrans_iconv(zh, nmem, src[0], &dst_term, src+1); - zebra_snippets_append(snippets, seqno, src[0], key.mem[0], dst_term); + ord = key.mem[0]; + + zebraExplain_lookup_ord(zh->reg->zei, ord, &index_type, + 0/* db */, 0/* set */, 0/* use */); + assert(index_type); + zebra_term_untrans_iconv(zh, nmem, index_type, + &dst_term, src); + zebra_snippets_append(snippets, seqno, ord, dst_term); while (*src++) ; off = src - reckeys->buf; @@ -1684,9 +1694,9 @@ static void extract_add_sort_string (RecWord *p, const char *str, int length) { int set, use, slen; - off += key_SU_decode(&set, sk->buf + off); - off += key_SU_decode(&use, sk->buf + off); - off += key_SU_decode(&slen, sk->buf + off); + off += key_SU_decode(&set, (unsigned char *) sk->buf + off); + off += key_SU_decode(&use, (unsigned char *) sk->buf + off); + off += key_SU_decode(&slen, (unsigned char *) sk->buf + off); off += slen; if (p->attrSet == set && p->attrUse == use) return; @@ -1930,9 +1940,9 @@ void extract_flushSortKeys (ZebraHandle zh, SYSNO sysno, { int set, use, slen; - off += key_SU_decode(&set, sk->buf + off); - off += key_SU_decode(&use, sk->buf + off); - off += key_SU_decode(&slen, sk->buf + off); + off += key_SU_decode(&set, (unsigned char *) sk->buf + off); + off += key_SU_decode(&use, (unsigned char *) sk->buf + off); + off += key_SU_decode(&slen, (unsigned char *) sk->buf + off); sortIdx_type(sortIdx, use); if (cmd == 1)