if (zebra_maps_read_file(reg->zebra_maps, index_fname) != ZEBRA_OK)
ret = ZEBRA_FAIL;
}
+ else
+ {
+ zebra_maps_define_default_sort(reg->zebra_maps);
+ }
}
if (!(reg->records = rec_open(reg->bfs, rw, record_compression)))
sort_type = ZEBRA_SORT_TYPE_FLAT;
else if (res_get_match(res, "sortindex", "i", "f"))
sort_type = ZEBRA_SORT_TYPE_ISAMB;
+ else if (res_get_match(res, "sortindex", "m", "f"))
+ sort_type = ZEBRA_SORT_TYPE_MULTI;
else
{
yaz_log(YLOG_WARN, "bad_value for 'sortindex'");
}
else
{
- for (i = 0; i<num_recs; i++)
+ WRBUF addinfo_w = wrbuf_alloc();
+ for (i = 0; i < num_recs; i++)
{
+ recs[i].errCode = 0;
+ recs[i].errString = 0;
+ recs[i].format = 0;
+ recs[i].len = 0;
+ recs[i].buf = 0;
+ recs[i].base = 0;
+ recs[i].sysno = poset[i].sysno;
if (poset[i].term)
{
- recs[i].errCode = 0;
recs[i].format = yaz_oid_recsyn_sutrs;
recs[i].len = strlen(poset[i].term);
recs[i].buf = poset[i].term;
zebra_snippets_hit_vector(zh, setname, poset[i].sysno,
hit_snippet);
#endif
+ wrbuf_rewind(addinfo_w);
recs[i].errCode =
zebra_record_fetch(zh, setname,
poset[i].sysno, poset[i].score,
stream, input_format, comp,
&recs[i].format, &buf, &len,
- &recs[i].base, &recs[i].errString);
+ &recs[i].base, addinfo_w);
+ if (wrbuf_len(addinfo_w))
+ recs[i].errString =
+ odr_strdup(stream, wrbuf_cstr(addinfo_w));
recs[i].len = len;
if (len > 0)
{
else
recs[i].buf = buf;
recs[i].score = poset[i].score;
- recs[i].sysno = poset[i].sysno;
zebra_snippets_destroy(hit_snippet);
}
else
ret = ZEBRA_FAIL;
break;
}
- recs[i].buf = 0; /* no record and no error issued */
- recs[i].len = 0;
- recs[i].errCode = 0;
- recs[i].format = 0;
- recs[i].sysno = 0;
}
}
zebra_meta_records_destroy(zh, poset, num_recs);
+ wrbuf_destroy(addinfo_w);
}
zebra_end_read(zh);
xfree(pos_array);