- new->record = newc;
- new->next = 0;
- newc->records = record;
- newc->merge_key = (char *) merge_key;
- newc->relevance = 0;
- newc->term_frequency_vec = 0;
- newc->recid = (*total)++;
- newc->metadata = nmem_malloc(l->nmem,
- sizeof(struct record_metadata*) * service->num_metadata);
- memset(newc->metadata, 0, sizeof(struct record_metadata*) * service->num_metadata);
- newc->sortkeys = nmem_malloc(l->nmem,
- sizeof(struct record_metadata*) * service->num_sortkeys);
- memset(newc->sortkeys, 0, sizeof(union data_types*) * service->num_sortkeys);
-
- *p = new;
- l->flatlist[l->num_records++] = newc;
- cluster = newc;
+ new->record = cluster;
+ new->hnext = 0;
+ cluster->records = record;
+ cluster->merge_key = nmem_strdup(l->nmem, merge_key);
+ cluster->relevance_score = 0;
+ cluster->term_frequency_vec = 0;
+ cluster->recid = nmem_strdup(l->nmem, merge_key);
+ (*total)++;
+ cluster->metadata =
+ nmem_malloc(l->nmem,
+ sizeof(struct record_metadata*) * service->num_metadata);
+ memset(cluster->metadata, 0,
+ sizeof(struct record_metadata*) * service->num_metadata);
+ cluster->sortkeys =
+ nmem_malloc(l->nmem, sizeof(struct record_metadata*) * service->num_sortkeys);
+ memset(cluster->sortkeys, 0,
+ sizeof(union data_types*) * service->num_sortkeys);
+
+ /* attach to hash list */
+ *p = new;
+
+ /* append to sorted_list */
+ *l->last = new;
+ l->last = &new->snext;
+ l->sorted_ptr = l->sorted_list;
+ new->snext = 0;
+
+ l->num_records++;