+ else if (md->merge == Metadata_merge_all || md->merge == Metadata_merge_no)
+ {
+ newm->next = *wheretoput;
+ *wheretoput = newm;
+ }
+ else if (md->merge == Metadata_merge_range)
+ {
+ assert(md->type == Metadata_type_year);
+ if (!*wheretoput)
+ {
+ *wheretoput = newm;
+ (*wheretoput)->data.number.min = first;
+ (*wheretoput)->data.number.max = last;
+ if (sk)
+ cluster->sortkeys[md->sortkey_offset] = &newm->data;
+ }
+ else
+ {
+ if (first < (*wheretoput)->data.number.min)
+ (*wheretoput)->data.number.min = first;
+ if (last > (*wheretoput)->data.number.max)
+ (*wheretoput)->data.number.max = last;
+ }
+#ifdef GAGA
+ if (sk)
+ {
+ union data_types *sdata = cluster->sortkeys[md->sortkey_offset];
+ yaz_log(YLOG_LOG, "SK range: %d-%d", sdata->number.min, sdata->number.max);
+ }
+#endif
+ }
+ else
+ yaz_log(YLOG_WARN, "Don't know how to merge on element name %s", md->name);
+
+ if (md->rank)
+ relevance_countwords(se->relevance, cluster, value, md->rank);
+ if (md->termlist)
+ {
+ if (md->type == Metadata_type_year)
+ {
+ char year[64];
+ sprintf(year, "%d", last);
+ add_facet(se, type, year);
+ if (first != last)
+ {
+ sprintf(year, "%d", first);
+ add_facet(se, type, year);
+ }
+ }
+ else
+ add_facet(se, type, value);
+ }