relevance-h now calculates some kind of round-robin score
[pazpar2-moved-to-github.git] / src / reclists.c
index 8ef9ba4..bec6268 100644 (file)
@@ -101,6 +101,10 @@ struct reclist_sortparms *reclist_parse_sortparms(NMEM nmem, const char *parms,
             {
                 type = Metadata_sortkey_relevance;
             }
+            else if (!strcmp(parm, "relevance_h"))
+            {
+                type = Metadata_sortkey_relevance_h;
+            }
             else if (!strcmp(parm, "position"))
             {
                 type = Metadata_sortkey_position;
@@ -159,6 +163,9 @@ static int reclist_cmp(const void *p1, const void *p2)
         case Metadata_sortkey_relevance:
             res = r2->relevance_score - r1->relevance_score;
             break;
+        case Metadata_sortkey_relevance_h:
+            res = r2->relevance_score - r1->relevance_score;
+            break;
         case Metadata_sortkey_string:
             s1 = ut1 ? ut1->text.sort : "";
             s2 = ut2 ? ut2->text.sort : "";
@@ -414,6 +421,7 @@ struct record_cluster *reclist_insert(struct reclist *l,
         /* attach to hash list */
         *p = new;
         l->num_records++;
+        l->sorted_list = l->sorted_ptr = 0;
     }
     yaz_mutex_leave(l->mutex);
     return cluster;