- b = (char *) xmalloc (keys->buf_max += 128000);
- if (keys->buf_used > 0)
- memcpy (b, keys->buf, keys->buf_used);
- xfree (keys->buf);
- keys->buf = b;
- }
- dst = keys->buf + keys->buf_used;
-
- /* leader byte is encoded as follows:
- bit 0 : 1 if attrset is unchanged; 0 if attrset is changed
- bit 1 : 1 if attruse is unchanged; 0 if attruse is changed
- */
- attrSet = p->attrSet;
- if (keys->buf_used > 0 && keys->prevAttrSet == attrSet)
- lead |= 1;
- else
- keys->prevAttrSet = attrSet;
- attrUse = p->attrUse;
- if (keys->buf_used > 0 && keys->prevAttrUse == attrUse)
- lead |= 2;
- else
- keys->prevAttrUse = attrUse;
-#if 1
- diff = 1 + *pseqno - keys->prevSeqNo;
- if (diff >= 1 && diff <= 15)
- lead |= (diff << 2);
- else
- diff = 0;
-#endif
- keys->prevSeqNo = *pseqno;
-
- *dst++ = lead;
+void print_rec_keys(ZebraHandle zh, zebra_rec_keys_t reckeys)
+{
+ yaz_log(YLOG_LOG, "print_rec_keys");
+ if (zebra_rec_keys_rewind(reckeys))
+ {
+ const char *str;
+ size_t slen;
+ struct it_key key;
+ while (zebra_rec_keys_read(reckeys, &str, &slen, &key))
+ {
+ char dst_buf[IT_MAX_WORD];
+ int seqno;
+ int index_type;
+ const char *db = 0;
+ assert(key.len <= 4 && key.len > 2);
+
+ zebraExplain_lookup_ord(zh->reg->zei,
+ key.mem[0], &index_type, &db, 0, 0);
+
+ seqno = (int) 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);
+ }
+ }
+}
+
+void extract_add_index_string (RecWord *p, const char *str, int length)
+{
+ struct it_key key;
+
+ ZebraHandle zh = p->extractCtrl->handle;
+ ZebraExplainInfo zei = zh->reg->zei;
+ int ch;