X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fextract.c;h=86de3b25cc75b51d67a97e9d1f7de3daf7675ade;hb=da5e43382ca16244e96457aa700c30e9b3178191;hp=366c6ecd1199e519339ed665e3d6c901531fea7a;hpb=1ccf2613ceef2359f589cb3dd7e72a899c618b2f;p=idzebra-moved-to-github.git diff --git a/index/extract.c b/index/extract.c index 366c6ec..86de3b2 100644 --- a/index/extract.c +++ b/index/extract.c @@ -1,10 +1,24 @@ /* - * Copyright (C) 1994-2000, Index Data + * Copyright (C) 1994-2001, Index Data * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: extract.c,v $ - * Revision 1.105 2000-12-05 10:01:44 adam + * Revision 1.109 2001-10-15 19:53:43 adam + * POSIX thread updates. First work on term sets. + * + * Revision 1.108 2001/06/14 11:44:56 adam + * Bug fix: default storeKeys setting wasn't read when group was specified. + * + * Revision 1.107 2001/05/28 13:58:48 adam + * Call flushSortKeys when record is skipped to fix bad re-use of + * sort keys to whatever next record that comes in. + * + * Revision 1.106 2000/12/05 12:22:53 adam + * Termlist source implemented (so that we can index values of XML/SGML + * attributes). + * + * Revision 1.105 2000/12/05 10:01:44 adam * Fixed bug regarding user-defined attribute sets. * * Revision 1.104 2000/09/05 14:04:05 adam @@ -750,8 +764,6 @@ static void addIndexString (RecWord *p, const char *string, int length) if (ch < 0) { ch = zebraExplain_addSU (zti, attrSet, attrUse); - yaz_log (LOG_LOG, "addSU set=%d use=%d SU=%d", - attrSet, attrUse, ch); } assert (ch > 0); memcpy (dst, &ch, sizeof(ch)); @@ -927,8 +939,11 @@ static void flushSortKeys (SYSNO sysno, int cmd) while (sk) { struct sortKey *sk_next = sk->next; - sortIdx_type (sortIdx, sk->attrUse); - sortIdx_add (sortIdx, sk->string, sk->length); + if (cmd >= 0) + { + sortIdx_type (sortIdx, sk->attrUse); + sortIdx_add (sortIdx, sk->string, sk->length); + } xfree (sk->string); xfree (sk); sk = sk_next; @@ -991,7 +1006,7 @@ static void flushRecordKeys (SYSNO sysno, int cmd, struct recKeys *reckeys) } #endif assert (ch > 0); - key_buf_used += key_SU_code (ch, ((char*)key_buf) + key_buf_used); + key_buf_used += key_SU_encode (ch, ((char*)key_buf) + key_buf_used); while (*src) ((char*)key_buf) [key_buf_used++] = *src++; @@ -1510,6 +1525,7 @@ static int recordExtract (SYSNO *sysno, const char *fname, { logf (LOG_LOG, "skipped %s %s " PRINTF_OFF_T, rGroup->recordType, fname, recordOffset); + flushSortKeys (*sysno, -1); rec_rm (&rec); logRecord (0); return 1; @@ -1755,11 +1771,14 @@ int fileExtract (SYSNO *sysno, const char *fname, const char *sval; sprintf (ext_res, "%sstoreKeys.%s", gprefix, ext); - if (!(sval = res_get (common_resource, ext_res))) + sval = res_get (common_resource, ext_res); + if (!sval) { sprintf (ext_res, "%sstoreKeys", gprefix); sval = res_get (common_resource, ext_res); } + if (!sval) + sval = res_get (common_resource, "storeKeys"); if (sval) rGroup->flagStoreKeys = atoi (sval); }