-/* $Id: zsets.c,v 1.42 2003-02-27 22:55:40 adam Exp $
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+/* $Id: zsets.c,v 1.48 2004-06-07 22:09:32 adam Exp $
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
Index Data Aps
This file is part of the Zebra server.
struct zset_sort_entry **entries;
};
-ZebraSet resultSetAddRPN (ZebraHandle zh, ODR input, ODR output,
+ZebraSet resultSetAddRPN (ZebraHandle zh, NMEM m,
Z_RPNQuery *rpn, int num_bases,
char **basenames,
const char *setname)
return 0;
zebraSet->locked = 1;
zebraSet->rpn = 0;
- zebraSet->nmem = nmem_create ();
+ zebraSet->nmem = m;
zebraSet->num_bases = num_bases;
zebraSet->basenames =
zebraSet->basenames[i] = nmem_strdup (zebraSet->nmem, basenames[i]);
- zebraSet->rset = rpn_search (zh, output->mem, rpn,
+ zebraSet->rset = rpn_search (zh, zebraSet->nmem, rpn,
zebraSet->num_bases,
zebraSet->basenames, zebraSet->name,
zebraSet);
}
else
{
+ const char *sort_max_str = zebra_get_resource(zh, "sortmax", "1000");
+
yaz_log (LOG_DEBUG, "adding result set %s", name);
s = (ZebraSet) xmalloc (sizeof(*s));
s->next = zh->sets;
s->sort_info = (struct zset_sort_info *)
xmalloc (sizeof(*s->sort_info));
- s->sort_info->max_entries = 1000;
+ s->sort_info->max_entries = atoi(sort_max_str);
+ if (s->sort_info->max_entries < 2)
+ s->sort_info->max_entries = 2;
+
s->sort_info->entries = (struct zset_sort_entry **)
xmalloc (sizeof(*s->sort_info->entries) *
s->sort_info->max_entries);
Z_SortKeySpec *sks = sort_sequence->specs[i];
Z_SortKey *sk;
- if (*sks->sortRelation == Z_SortRelation_ascending)
+ if (*sks->sortRelation == Z_SortKeySpec_ascending)
sort_criteria[i].relation = 'A';
- else if (*sks->sortRelation == Z_SortRelation_descending)
+ else if (*sks->sortRelation == Z_SortKeySpec_descending)
sort_criteria[i].relation = 'D';
else
{
rset->rset_terms[i]->flags,
rset->rset_terms[i]->count);
- *sort_status = Z_SortStatus_success;
+ *sort_status = Z_SortResponse_success;
yaz_log (LOG_LOG, "resultSetSortSingle end");
}
-RSET resultSetRef (ZebraHandle zh, Z_ResultSetId *resultSetId)
+RSET resultSetRef (ZebraHandle zh, const char *resultSetId)
{
ZebraSet s;
if (p && !p->init_flag)
{
if (p->control->create)
- p->class_handle = (*p->control->create)(zh->reg);
+ p->class_handle = (*p->control->create)(zh);
p->init_flag = 1;
}
return p;