X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fextract.c;h=9a609a991a57063b62e8d247b89f48055f92f47c;hb=793cf3d1c05dc8e2d971b1c6f233589b0473864a;hp=8358ade76267aafb7d93100dae38f678c74f3174;hpb=b88909df16157ed1e7859bc3fad6b01520d4865e;p=idzebra-moved-to-github.git diff --git a/index/extract.c b/index/extract.c index 8358ade..9a609a9 100644 --- a/index/extract.c +++ b/index/extract.c @@ -1,4 +1,4 @@ -/* $Id: extract.c,v 1.220 2006-06-13 12:02:06 adam Exp $ +/* $Id: extract.c,v 1.224 2006-06-23 11:21:38 adam Exp $ Copyright (C) 1995-2006 Index Data ApS @@ -36,18 +36,6 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include -#ifdef WIN32 -#define PRINTF_OFF_T "%I64d" -#else -/* !WIN32 */ -#if SIZEOF_OFF_T == SIZEOF_LONG_LONG -#define PRINTF_OFF_T "%lld" -#else -#define PRINTF_OFF_T "%ld" -#endif - -#endif - #define ENCODE_BUFLEN 768 struct encode_info { void *encode_handle; @@ -118,7 +106,9 @@ static void logRecord (ZebraHandle zh) } } -static void extract_add_index_string (RecWord *p, const char *str, int length); +static void extract_add_index_string (RecWord *p, + zinfo_index_category_t cat, + const char *str, int length); static void extract_set_store_data_prepare(struct recExtractCtrl *p); @@ -140,16 +130,17 @@ static void searchRecordKey(ZebraHandle zh, { int i; int ch = -1; + zinfo_index_category_t cat = zinfo_index_category_index; for (i = 0; ireg->zei, '0', index_name); + ch = zebraExplain_lookup_attr_str(zh->reg->zei, cat, '0', index_name); if (ch < 0) - ch = zebraExplain_lookup_attr_str(zh->reg->zei, 'p', index_name); + ch = zebraExplain_lookup_attr_str(zh->reg->zei, cat, 'p', index_name); if (ch < 0) - ch = zebraExplain_lookup_attr_str(zh->reg->zei, 'w', index_name); + ch = zebraExplain_lookup_attr_str(zh->reg->zei, cat, 'w', index_name); if (ch < 0) return ; @@ -412,10 +403,11 @@ static void all_matches_add(struct recExtractCtrl *ctrl) { RecWord word; extract_init(ctrl, &word); - word.index_name = "allrecords"; + word.index_name = "_ALLRECORDS"; word.index_type = 'w'; word.seqno = 1; - extract_add_index_string (&word, "", 0); + extract_add_index_string (&word, zinfo_index_category_alwaysmatches, + "", 0); } static ZEBRA_RES file_extract_record(ZebraHandle zh, @@ -471,11 +463,11 @@ static ZEBRA_RES file_extract_record(ZebraHandle zh, init_extractCtrl(zh, &extractCtrl); if (!zh->m_flag_rw) - printf ("File: %s " PRINTF_OFF_T "\n", fname, recordOffset); + printf ("File: %s " ZINT_FORMAT "\n", fname, (zint)recordOffset); if (zh->m_flag_rw) { char msg[512]; - sprintf (msg, "%s:" PRINTF_OFF_T , fname, recordOffset); + sprintf (msg, "%s:" ZINT_FORMAT , fname, (zint)recordOffset); yaz_log_init_prefix2 (msg); } @@ -490,8 +482,9 @@ static ZEBRA_RES file_extract_record(ZebraHandle zh, if (zh->m_flag_rw && zh->records_processed < zh->m_file_verbose_limit) { - yaz_log (YLOG_WARN, "fail %s %s " PRINTF_OFF_T, zh->m_record_type, - fname, recordOffset); + yaz_log (YLOG_WARN, "fail %s %s " ZINT_FORMAT, + zh->m_record_type, + fname, (zint) recordOffset); } return ZEBRA_FAIL; } @@ -502,8 +495,8 @@ static ZEBRA_RES file_extract_record(ZebraHandle zh, zh->records_processed < zh->m_file_verbose_limit) { yaz_log (YLOG_WARN, "no filter for %s %s " - PRINTF_OFF_T, zh->m_record_type, - fname, recordOffset); + ZINT_FORMAT, zh->m_record_type, + fname, (zint) recordOffset); } return ZEBRA_FAIL; } @@ -559,8 +552,8 @@ static ZEBRA_RES file_extract_record(ZebraHandle zh, return ZEBRA_OK; if (zh->records_processed < zh->m_file_verbose_limit) - yaz_log (YLOG_WARN, "empty %s %s " PRINTF_OFF_T, zh->m_record_type, - fname, recordOffset); + yaz_log(YLOG_WARN, "empty %s %s " ZINT_FORMAT, zh->m_record_type, + fname, (zint)recordOffset); return ZEBRA_OK; } @@ -569,9 +562,9 @@ static ZEBRA_RES file_extract_record(ZebraHandle zh, /* new record */ if (deleteFlag) { - yaz_log (YLOG_LOG, "delete %s %s " PRINTF_OFF_T, zh->m_record_type, - fname, recordOffset); - yaz_log (YLOG_WARN, "cannot delete record above (seems new)"); + yaz_log(YLOG_LOG, "delete %s %s " ZINT_FORMAT, zh->m_record_type, + fname, (zint)recordOffset); + yaz_log(YLOG_WARN, "cannot delete record above (seems new)"); return ZEBRA_OK; } @@ -581,10 +574,10 @@ static ZEBRA_RES file_extract_record(ZebraHandle zh, if (zh->records_processed < zh->m_file_verbose_limit) { - yaz_log(YLOG_LOG, "add %s %s " PRINTF_OFF_T + yaz_log(YLOG_LOG, "add %s %s " ZINT_FORMAT " " ZINT_FORMAT " %s" , zh->m_record_type, - fname, recordOffset, *sysno, match_str_to_print); + fname, (zint) recordOffset, *sysno, match_str_to_print); } recordAttr = rec_init_attr (zh->reg->zei, rec); recordAttr->staticrank = extractCtrl.staticrank; @@ -631,19 +624,19 @@ static ZEBRA_RES file_extract_record(ZebraHandle zh, /* record going to be deleted */ if (zebra_rec_keys_empty(delkeys)) { - yaz_log (YLOG_LOG, "delete %s %s " PRINTF_OFF_T - " " ZINT_FORMAT, - zh->m_record_type, fname, recordOffset, *sysno); - yaz_log (YLOG_WARN, "cannot delete file above, storeKeys false (1)"); + yaz_log(YLOG_LOG, "delete %s %s " ZINT_FORMAT + " " ZINT_FORMAT, + zh->m_record_type, fname, (zint)recordOffset, *sysno); + yaz_log(YLOG_WARN, "cannot delete file above, storeKeys false (1)"); } else { if (zh->records_processed < zh->m_file_verbose_limit) { - yaz_log(YLOG_LOG, "delete %s %s " PRINTF_OFF_T + yaz_log(YLOG_LOG, "delete %s %s " ZINT_FORMAT " " ZINT_FORMAT " %s" , - zh->m_record_type, - fname, recordOffset, *sysno, match_str_to_print); + zh->m_record_type, fname, (zint) recordOffset, + *sysno, match_str_to_print); } zh->records_deleted++; if (matchStr) @@ -662,10 +655,10 @@ static ZEBRA_RES file_extract_record(ZebraHandle zh, /* flush new keys for sort&search etc */ if (zh->records_processed < zh->m_file_verbose_limit) { - yaz_log(YLOG_LOG, "update %s %s " PRINTF_OFF_T + yaz_log(YLOG_LOG, "update %s %s " ZINT_FORMAT " " ZINT_FORMAT " %s" , - zh->m_record_type, - fname, recordOffset, *sysno, match_str_to_print); + zh->m_record_type, fname, (zint) recordOffset, + *sysno, match_str_to_print); } recordAttr->staticrank = extractCtrl.staticrank; extract_flushSortKeys (zh, *sysno, 1, zh->reg->sortKeys); @@ -735,8 +728,8 @@ static ZEBRA_RES file_extract_record(ZebraHandle zh, xmalloc (recordAttr->recordSize); if (lseek (fi->fd, recordOffset, SEEK_SET) < 0) { - yaz_log (YLOG_ERRNO|YLOG_FATAL, "seek to " PRINTF_OFF_T " in %s", - recordOffset, fname); + yaz_log(YLOG_ERRNO|YLOG_FATAL, "seek to " ZINT_FORMAT " in %s", + (zint)recordOffset, fname); exit (1); } if (read (fi->fd, rec->info[recInfo_storeData], recordAttr->recordSize) @@ -1458,11 +1451,6 @@ void extract_flushWriteKeys (ZebraHandle zh, int final) { yaz_log(log_level, " nothing to flush section=%d buf=%p i=%d", zh->reg->key_file_no, zh->reg->key_buf, ptr_i); - yaz_log(log_level, " buf=%p ", - zh->reg->key_buf); - yaz_log(log_level, " ptr=%d ",zh->reg->ptr_i); - yaz_log(log_level, " reg=%p ",zh->reg); - return; } @@ -1638,7 +1626,8 @@ void print_rec_keys(ZebraHandle zh, zebra_rec_keys_t reckeys) } } -static void extract_add_index_string(RecWord *p, const char *str, int length) +static void extract_add_index_string(RecWord *p, zinfo_index_category_t cat, + const char *str, int length) { struct it_key key; @@ -1649,9 +1638,9 @@ static void extract_add_index_string(RecWord *p, const char *str, int length) if (!p->index_name) return; - ch = zebraExplain_lookup_attr_str(zei, p->index_type, p->index_name); + ch = zebraExplain_lookup_attr_str(zei, cat, p->index_type, p->index_name); if (ch < 0) - ch = zebraExplain_add_attr_str(zei, p->index_type, p->index_name); + ch = zebraExplain_add_attr_str(zei, cat, p->index_type, p->index_name); key.len = 4; key.mem[0] = ch; @@ -1686,13 +1675,15 @@ static void extract_add_sort_string(RecWord *p, const char *str, int length) ZebraHandle zh = p->extractCtrl->handle; ZebraExplainInfo zei = zh->reg->zei; int ch; + zinfo_index_category_t cat = zinfo_index_category_sort; + if (!p->index_name) return; - ch = zebraExplain_lookup_attr_str(zei, p->index_type, p->index_name); + ch = zebraExplain_lookup_attr_str(zei, cat, p->index_type, p->index_name); if (ch < 0) - ch = zebraExplain_add_attr_str(zei, p->index_type, p->index_name); + ch = zebraExplain_add_attr_str(zei, cat, p->index_type, p->index_name); key.len = 4; key.mem[0] = ch; key.mem[1] = p->record_id; @@ -1724,7 +1715,19 @@ static void extract_add_string (RecWord *p, const char *string, int length) if (zebra_maps_is_sort (p->zebra_maps, p->index_type)) extract_add_sort_string (p, string, length); else - extract_add_index_string (p, string, length); + { + extract_add_index_string(p, zinfo_index_category_index, + string, length); + if (zebra_maps_is_alwaysmatches(p->zebra_maps, p->index_type)) + { + RecWord word; + memcpy(&word, p, sizeof(word)); + + word.seqno = 1; + extract_add_index_string( + &word, zinfo_index_category_alwaysmatches, "", 0); + } + } } static void extract_add_incomplete_field (RecWord *p)