-/* $Id: extract.c,v 1.273 2007-12-13 11:09:20 adam Exp $
+/* $Id: extract.c,v 1.276 2007-12-20 11:21:29 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
ZEBRA_RES zebra_extract_file(ZebraHandle zh, zint *sysno, const char *fname,
- int deleteFlag)
+ enum zebra_recctrl_action_t action)
{
ZEBRA_RES r = ZEBRA_OK;
int i, fd;
default:
yaz_log(YLOG_WARN, "Bad filter version: %s", zh->m_record_type);
}
- if (sysno && deleteFlag)
+ if (sysno && (action == action_delete || action == action_a_delete))
{
streamp = 0;
fi = 0;
zebra_create_stream_fd(streamp, fd, 0);
}
r = zebra_extract_records_stream(zh, streamp,
- deleteFlag ?
- action_delete : action_update,
+ action,
0, /* tst_mode */
zh->m_record_type,
sysno,
if (! *sysno)
{
- /* new record */
+ /* new record AKA does not exist already */
if (action == action_delete)
{
- yaz_log(YLOG_LOG, "delete %s %s " ZINT_FORMAT, recordType,
- pr_fname, (zint) start_offset);
+ yaz_log(YLOG_LOG, "delete %s %s " ZINT_FORMAT, recordType,
+ pr_fname, (zint) start_offset);
yaz_log(YLOG_WARN, "cannot delete record above (seems new)");
return ZEBRA_FAIL;
}
+ else if (action == action_a_delete)
+ {
+ if (show_progress)
+ yaz_log(YLOG_LOG, "adelete %s %s " ZINT_FORMAT, recordType,
+ pr_fname, (zint) start_offset);
+ return ZEBRA_OK;
+ }
else if (action == action_replace)
{
yaz_log(YLOG_LOG, "update %s %s " ZINT_FORMAT, recordType,
extract_flush_record_keys(zh, *sysno, 0, delkeys,
recordAttr->staticrank);
#endif
- if (action == action_delete)
+ if (action == action_delete || action == action_a_delete)
{
/* record going to be deleted */
#if FLUSH2
static void extract_add_icu(RecWord *p, zebra_map_t zm)
{
- struct it_key key;
const char *res_buf = 0;
size_t res_len = 0;
- ZebraHandle zh = p->extractCtrl->handle;
-
- int cat = zinfo_index_category_index;
- int ch = zebraExplain_lookup_attr_str(zh->reg->zei, cat,
- p->index_type, p->index_name);
- if (ch < 0)
- ch = zebraExplain_add_attr_str(zh->reg->zei, cat,
- p->index_type, p->index_name);
+
zebra_map_tokenize_start(zm, p->term_buf, p->term_len);
while (zebra_map_tokenize_next(zm, &res_buf, &res_len, 0, 0))
{
- int i = 0;
- key.mem[i++] = ch;
- key.mem[i++] = p->record_id;
- key.mem[i++] = p->section_id;
-
- if (zh->m_segment_indexing)
- key.mem[i++] = p->segment;
- key.mem[i++] = p->seqno;
- key.len = i;
-
- zebra_rec_keys_write(zh->reg->keys, res_buf, res_len, &key);
-
+ extract_add_string(p, zm, res_buf, res_len);
p->seqno++;
}
}
Call sequence:
extract_token_add
- extract_add_{in}_complete
+ extract_add_{in}_complete / extract_add_icu
extract_add_string
extract_add_index_string