X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzsets.c;h=1e0a590a42c7573d5513aa8a1d9389d416c9d206;hb=2038fcec0ea77e3fdb854ff968423d3ef24d53a8;hp=75d5c6c62ff811337954898a54fe07b79ff8dea9;hpb=ca19a15163ee74ee0c6765bfef4fd9794627e26a;p=idzebra-moved-to-github.git diff --git a/index/zsets.c b/index/zsets.c index 75d5c6c..1e0a590 100644 --- a/index/zsets.c +++ b/index/zsets.c @@ -4,7 +4,14 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: zsets.c,v $ - * Revision 1.6 1995-09-28 09:19:49 adam + * Revision 1.8 1995-10-10 13:59:25 adam + * Function rset_open changed its wflag parameter to general flags. + * + * Revision 1.7 1995/10/06 14:38:01 adam + * New result set method: r_score. + * Local no (sysno) and score is transferred to retrieveCtrl. + * + * Revision 1.6 1995/09/28 09:19:49 adam * xfree/xmalloc used everywhere. * Extract/retrieve method seems to work for text records. * @@ -84,7 +91,7 @@ ZServerSetSysno *resultSetSysnoGet (ZServerInfo *zi, const char *name, return NULL; logf (LOG_DEBUG, "resultSetRecordGet"); sr = xmalloc (sizeof(*sr) * num); - rfd = rset_open (rset, 0); + rfd = rset_open (rset, RSETF_READ|RSETF_SORT_RANK); while (rset_read (rset, rfd, &key)) { if (key.sysno != psysno) @@ -94,6 +101,7 @@ ZServerSetSysno *resultSetSysnoGet (ZServerInfo *zi, const char *name, if (position == positions[num_i]) { sr[num_i].sysno = psysno; + rset_score (rset, rfd, &sr[num_i].score); num_i++; if (++num_i == num) break; @@ -117,85 +125,3 @@ void resultSetRecordDel (ZServerInfo *zi, ZServerRecord *records, int num) xfree (records[i].buf); xfree (records); } - - -#if 0 -ZServerSetSysno *resultSetSysno (ZServerInfo *zi, const char *name, - int num, int *positions) -{ - ZServerSet *sset; - ZServerRecord *sr; - RSET rset; - int num_i = 0; - int position = 0; - int psysno = 0; - struct it_key key; - RSFD rfd; - - if (!(sset = resultSetGet (zi, name))) - return NULL; - if (!(rset = sset->rset)) - return NULL; - logf (LOG_DEBUG, "resultSetRecordGet"); - sr = xmalloc (sizeof(*sr) * num); - rfd = rset_open (rset, 0); - while (rset_read (rset, rfd, &key)) - { - if (key.sysno != psysno) - { - psysno = key.sysno; - position++; - if (position == positions[num_i]) - { - FILE *inf; - char fname[SYS_IDX_ENTRY_LEN]; - - sr[num_i].buf = NULL; - if (lseek (zi->sys_idx_fd, psysno * SYS_IDX_ENTRY_LEN, - SEEK_SET) == -1) - { - logf (LOG_FATAL|LOG_ERRNO, "lseek of sys_idx"); - exit (1); - } - if (read (zi->sys_idx_fd, fname, SYS_IDX_ENTRY_LEN) == -1) - { - logf (LOG_FATAL|LOG_ERRNO, "read of sys_idx"); - exit (1); - } - if (!(inf = fopen (fname, "r"))) - logf (LOG_WARN, "fopen: %s", fname); - else - { - long size; - - fseek (inf, 0L, SEEK_END); - size = ftell (inf); - fseek (inf, 0L, SEEK_SET); - logf (LOG_DEBUG, "get sysno=%d, fname=%s, size=%ld", - psysno, fname, (long) size); - sr[num_i].buf = xmalloc (size+1); - sr[num_i].size = size; - sr[num_i].buf[size] = '\0'; - if (fread (sr[num_i].buf, size, 1, inf) != 1) - { - logf (LOG_FATAL|LOG_ERRNO, "fread %s", fname); - exit (1); - } - fclose (inf); - } - num_i++; - if (num_i == num) - break; - } - } - } - rset_close (rset, rfd); - while (num_i < num) - { - sr[num_i].buf = NULL; - sr[num_i].size = 0; - num_i++; - } - return sr; -} -#endif