-/* $Id: zsets.c,v 1.57 2004-08-20 14:44:46 heikki Exp $
+/* $Id: zsets.c,v 1.60 2004-09-01 15:01:32 heikki Exp $
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
Index Data Aps
#endif
#include "index.h"
-#include <rstemp.h>
+#include <rset.h>
#define SORT_IDX_ENTRYSIZE 64
#define ZSET_SORT_MAX_LEVEL 3
char *name;
RSET rset;
NMEM nmem;
+ NMEM rset_nmem; /* for creating the rsets in */
zint hits;
int num_bases;
char **basenames;
zebraSet->locked = 1;
zebraSet->rpn = 0;
zebraSet->nmem = m;
+ zebraSet->rset_nmem=nmem_create(); /* FIXME - where to free this ?? */
zebraSet->num_bases = num_bases;
zebraSet->basenames =
zebraSet->basenames[i] = nmem_strdup (zebraSet->nmem, basenames[i]);
- zebraSet->rset = rpn_search (zh, zebraSet->nmem, rpn,
- zebraSet->num_bases,
+ zebraSet->rset = rpn_search (zh, zebraSet->nmem, zebraSet->rset_nmem,
+ rpn, zebraSet->num_bases,
zebraSet->basenames, zebraSet->name,
zebraSet);
zh->hits = zebraSet->hits;
s->term_entries = 0;
s->hits = 0;
s->rset = 0;
+ s->rset_nmem=0;
s->nmem = 0;
s->rpn = 0;
return s;
NMEM nmem = nmem_create ();
yaz_log (LOG_LOG, "research %s", name);
s->rset =
- rpn_search (zh, nmem, s->rpn, s->num_bases,
+ rpn_search (zh, nmem, s->rset_nmem, s->rpn, s->num_bases,
s->basenames, s->name, s);
nmem_destroy (nmem);
}
if (s->rset)
rset_delete (s->rset);
s->rset = 0;
+ if (s->rset_nmem)
+ nmem_destroy(s->rset_nmem);
+ s->rset_nmem=0;
}
}
nmem_destroy (s->nmem);
if (s->rset)
rset_delete (s->rset);
+ if (s->rset_nmem)
+ nmem_destroy(s->rset_nmem);
xfree (s->name);
xfree (s);
}
while (num_i < num && positions[num_i] < position)
num_i++;
rfd = rset_open (rset, RSETF_READ);
- while (num_i < num && rset_read (rset, rfd, &key))
+ while (num_i < num && rset_read (rfd, &key))
{
#if IT_KEY_NEW
zint this_sys = key.mem[0];
}
}
}
- rset_close (rset, rfd);
+ rset_close (rfd);
}
}
return sr;
}
}
rfd = rset_open (rset, RSETF_READ);
- while (rset_read (rset, rfd, &key))
+ while (rset_read (rfd, &key))
{
#if IT_KEY_NEW
zint this_sys = key.mem[0];
sort_criteria, num_criteria, psysno);
}
}
- rset_close (rset, rfd);
+ rset_close (rfd);
#if 0
for (i = 0; i < rset->no_rset_terms; i++)
}
rc = rank_class->control;
- if (rset_read (rset, rfd, &key))
+ if (rset_read (rfd, &key))
{
#if IT_KEY_NEW
zint psysno = key.mem[0];
if ( (est==-2) && (zebraSet->hits==esthits))
{ /* time to estimate the hits */
- rset_pos(rset,rfd,&cur,&tot);
+ rset_pos(rfd,&cur,&tot);
if (tot>0) {
ratio=cur/tot;
est=(zint)(0.5+zebraSet->hits/ratio);
}
}
}
- while (rset_read (rset, rfd, &key) && (est<0) );
+ while (rset_read (rfd, &key) && (est<0) );
score = (*rc->calc) (handle, psysno);
resultSetInsertRank (zh, sort_info, psysno, score, 'A');
(*rc->end) (zh->reg, handle);
}
- rset_close (rset, rfd);
+ rset_close (rfd);
/*
for (i = 0; i < rset->no_rset_terms; i++)
{