session->relevance = 0;
session->total_hits = 0;
session->total_records = 0;
+ session->number_of_warnings_unknown_elements = 0;
session->num_termlists = 0;
session->reclist = 0;
session->requestid = -1;
value, type);
continue;
}
- rec_md->next = record->metadata[md_field_id];
- record->metadata[md_field_id] = rec_md;
+ wheretoput = &record->metadata[md_field_id];
+ while (*wheretoput)
+ wheretoput = &(*wheretoput)->next;
+ *wheretoput = rec_md;
// merged metadata
rec_md = record_metadata_init(se->nmem, (char *) value,
// and polulate with data:
// assign cluster or record based on merge action
+ if (ser_md->merge == Metadata_merge_no)
+ {
+ while (*wheretoput)
+ wheretoput = &(*wheretoput)->next;
+ *wheretoput = rec_md;
+ }
if (ser_md->merge == Metadata_merge_unique)
{
struct record_metadata *mnode;
xmlFree(value);
type = value = 0;
}
- else
- yaz_log(YLOG_WARN,
- "Unexpected element %s in internal record", n->name);
+ else
+ {
+ if (se->number_of_warnings_unknown_elements == 0)
+ yaz_log(YLOG_WARN,
+ "Unexpected element in internal record: %s", n->name);
+ se->number_of_warnings_unknown_elements++;
+ }
}
if (type)
xmlFree(type);