-/* $Id: extract.c,v 1.192 2005-08-22 09:04:17 adam Exp $
+/* $Id: extract.c,v 1.195 2005-09-16 09:58:38 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
#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))
recordAttr = rec_init_attr (zh->reg->zei, rec);
+#if REC_MULTI_SKIP
if (!force_update && recordAttr->runNumber ==
zebraExplain_runNumberIncrement (zh->reg->zei, 0))
{
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];
recordAttr = rec_init_attr (zh->reg->zei, rec);
+#if REC_MULTI_SKIP
if (!force_update) {
if (recordAttr->runNumber ==
zebraExplain_runNumberIncrement (zh->reg->zei, 0))
return ZEBRA_FAIL;
}
}
+#endif
delkeys.buf_used = rec->size[recInfo_delKeys];
delkeys.buf = rec->info[recInfo_delKeys];
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)
{
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;