* Sebastian Hammer, Adam Dickmeiss
*
* $Log: kdump.c,v $
- * Revision 1.4 1995-09-08 14:52:27 adam
+ * Revision 1.7 1995-10-10 12:24:38 adam
+ * Temporary sort files are compressed.
+ *
+ * Revision 1.6 1995/09/29 14:01:42 adam
+ * Bug fixes.
+ *
+ * Revision 1.5 1995/09/11 13:09:35 adam
+ * More work on relevance feedback.
+ *
+ * Revision 1.4 1995/09/08 14:52:27 adam
* Minor changes. Dictionary is lower case now.
*
* Revision 1.3 1995/09/06 16:11:17 adam
#include <stdio.h>
#include <assert.h>
#include <unistd.h>
+#include <assert.h>
#include <alexutil.h>
#include "index.h"
char *prog;
-static int read_one (FILE *inf, char *name, char *key)
+
+int key_file_decode (FILE *f)
+{
+ int c, d;
+
+ c = getc (f);
+ switch (c & 192)
+ {
+ case 0:
+ d = c;
+ break;
+ case 64:
+ d = ((c&63) << 8) + (getc (f) & 0xff);
+ break;
+ case 128:
+ d = ((c&63) << 8) + (getc (f) & 0xff);
+ d = (d << 8) + (getc (f) & 0xff);
+ break;
+ case 192:
+ d = ((c&63) << 8) + (getc (f) & 0xff);
+ d = (d << 8) + (getc (f) & 0xff);
+ d = (d << 8) + (getc (f) & 0xff);
+ break;
+ }
+ return d;
+}
+
+
+static int read_one (FILE *inf, char *name, char *key, struct it_key *prevk)
{
int c;
int i = 0;
- name[0] = 0;
+ struct it_key itkey;
do
{
if ((c=getc(inf)) == EOF)
return 0;
name[i++] = c;
} while (c);
- for (i = 0; i<sizeof(struct it_key)+1; i++)
- ((char *)key)[i] = getc (inf);
+ if (i > 1)
+ prevk->sysno = 0;
+ c = key_file_decode (inf);
+ key[0] = c & 1;
+ c = c >> 1;
+ itkey.sysno = c + prevk->sysno;
+ if (c)
+ {
+ prevk->sysno = itkey.sysno;
+ prevk->seqno = 0;
+ }
+ c = key_file_decode (inf);
+ itkey.seqno = c + prevk->seqno;
+ prevk->seqno = itkey.seqno;
+
+ memcpy (key+1, &itkey, sizeof(itkey));
return 1;
}
char key_string[IT_MAX_WORD];
char key_info[256];
FILE *inf;
+ struct it_key prevk;
+
+ prevk.sysno = 0;
+ prevk.seqno = 0;
prog = *argv;
while ((ret = options ("v:", argv, argc, &arg)) != -2)
logf (LOG_FATAL|LOG_ERRNO, "fopen %s", key_fname);
exit (1);
}
- while (read_one (inf, key_string, key_info))
+ while (read_one (inf, key_string, key_info, &prevk))
{
struct it_key k;
+ int op;
- memcpy (&k, key_info+1, sizeof(k));
- printf ("%7d op=%d s=%-3d %s\n", k.sysno, *key_info, k.seqno,
+ op = key_info[0];
+ memcpy (&k, 1+key_info, sizeof(k));
+ printf ("%7d op=%d s=%-5d %s\n", k.sysno, op, k.seqno,
key_string);
}
if (fclose (inf))