X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=index%2Fzsets.c;h=57b7e4b88dc4187a6a7bbb94b79b6860e5f782da;hb=5f5c3226dc29b0f8f2e1ee478cbfbd03f2c319e0;hp=ac28c8e40159c533c0929b7ee8ae57a9dec0acdf;hpb=f0e68a4ee36180d52d69369d0bb09a33392bb643;p=idzebra-moved-to-github.git diff --git a/index/zsets.c b/index/zsets.c index ac28c8e..57b7e4b 100644 --- a/index/zsets.c +++ b/index/zsets.c @@ -1,5 +1,5 @@ -/* $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. @@ -70,7 +70,7 @@ struct zset_sort_info { 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) @@ -87,7 +87,7 @@ ZebraSet resultSetAddRPN (ZebraHandle zh, ODR input, ODR output, return 0; zebraSet->locked = 1; zebraSet->rpn = 0; - zebraSet->nmem = nmem_create (); + zebraSet->nmem = m; zebraSet->num_bases = num_bases; zebraSet->basenames = @@ -96,7 +96,7 @@ ZebraSet resultSetAddRPN (ZebraHandle zh, ODR input, ODR output, 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); @@ -207,6 +207,8 @@ ZebraSet resultSetAdd (ZebraHandle zh, const char *name, int ov) } 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; @@ -216,7 +218,10 @@ ZebraSet resultSetAdd (ZebraHandle zh, const char *name, int ov) 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); @@ -617,9 +622,9 @@ void resultSetSortSingle (ZebraHandle zh, NMEM nmem, 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 { @@ -687,11 +692,11 @@ void resultSetSortSingle (ZebraHandle zh, NMEM nmem, 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; @@ -765,7 +770,7 @@ ZebraRankClass zebraRankLookup (ZebraHandle zh, const char *name) 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;