projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Avoid crash zvrank.weighting-scheme is unset.
[idzebra-moved-to-github.git]
/
index
/
zsets.c
diff --git
a/index/zsets.c
b/index/zsets.c
index
6db021b
..
57b7e4b
100644
(file)
--- a/
index/zsets.c
+++ b/
index/zsets.c
@@
-1,5
+1,5
@@
-/* $Id: zsets.c,v 1.38 2002-08-02 19:26:56 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.
Index Data Aps
This file is part of the Zebra server.
@@
-70,7
+70,7
@@
struct zset_sort_info {
struct zset_sort_entry **entries;
};
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)
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;
return 0;
zebraSet->locked = 1;
zebraSet->rpn = 0;
- zebraSet->nmem = nmem_create ();
+ zebraSet->nmem = m;
zebraSet->num_bases = num_bases;
zebraSet->basenames =
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->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);
zebraSet->num_bases,
zebraSet->basenames, zebraSet->name,
zebraSet);
@@
-160,13
+160,13
@@
int zebra_resultSetTerms (ZebraHandle zh, const char *setname,
size_t inleft = strlen(inbuf);
size_t outleft = *len - 1;
int converted = 0;
size_t inleft = strlen(inbuf);
size_t outleft = *len - 1;
int converted = 0;
-#if HAVE_ICONV_H
- if (zh->iconv_from_utf8 != (iconv_t)(-1))
+
+ if (zh->iconv_from_utf8 != 0)
{
char *outbuf = out;
size_t ret;
{
char *outbuf = out;
size_t ret;
- ret = iconv(zh->iconv_from_utf8, &inbuf, &inleft,
+ ret = yaz_iconv(zh->iconv_from_utf8, &inbuf, &inleft,
&outbuf, &outleft);
if (ret == (size_t)(-1))
*len = 0;
&outbuf, &outleft);
if (ret == (size_t)(-1))
*len = 0;
@@
-174,7
+174,6
@@
int zebra_resultSetTerms (ZebraHandle zh, const char *setname,
*len = outbuf - out;
converted = 1;
}
*len = outbuf - out;
converted = 1;
}
-#endif
if (!converted)
{
if (inleft > outleft)
if (!converted)
{
if (inleft > outleft)
@@
-198,7
+197,7
@@
ZebraSet resultSetAdd (ZebraHandle zh, const char *name, int ov)
break;
if (s)
{
break;
if (s)
{
- logf (LOG_DEBUG, "updating result set %s", name);
+ yaz_log (LOG_DEBUG, "updating result set %s", name);
if (!ov || s->locked)
return NULL;
if (s->rset)
if (!ov || s->locked)
return NULL;
if (s->rset)
@@
-208,7
+207,9
@@
ZebraSet resultSetAdd (ZebraHandle zh, const char *name, int ov)
}
else
{
}
else
{
- logf (LOG_DEBUG, "adding result set %s", name);
+ 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;
zh->sets = s;
s = (ZebraSet) xmalloc (sizeof(*s));
s->next = zh->sets;
zh->sets = s;
@@
-217,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 = (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);
s->sort_info->entries = (struct zset_sort_entry **)
xmalloc (sizeof(*s->sort_info->entries) *
s->sort_info->max_entries);
@@
-364,7
+368,7
@@
ZebraPosSet zebraPosSetCreate (ZebraHandle zh, const char *name,
position = positions[i];
if (position > 0 && position <= sort_info->num_entries)
{
position = positions[i];
if (position > 0 && position <= sort_info->num_entries)
{
- logf (LOG_DEBUG, "got pos=%d (sorted)", position);
+ yaz_log (LOG_DEBUG, "got pos=%d (sorted)", position);
sr[i].sysno = sort_info->entries[position-1]->sysno;
sr[i].score = sort_info->entries[position-1]->score;
}
sr[i].sysno = sort_info->entries[position-1]->sysno;
sr[i].score = sort_info->entries[position-1]->score;
}
@@
-409,7
+413,7
@@
ZebraPosSet zebraPosSetCreate (ZebraHandle zh, const char *name,
if (position == positions[num_i])
{
sr[num_i].sysno = psysno;
if (position == positions[num_i])
{
sr[num_i].sysno = psysno;
- logf (LOG_DEBUG, "got pos=%d (unsorted)", position);
+ yaz_log (LOG_DEBUG, "got pos=%d (unsorted)", position);
sr[num_i].score = -1;
num_i++;
}
sr[num_i].score = -1;
num_i++;
}
@@
-571,7
+575,7
@@
void resultSetSort (ZebraHandle zh, NMEM nmem,
zh->errCode = 230;
return;
}
zh->errCode = 230;
return;
}
- logf (LOG_DEBUG, "result set sort input=%s output=%s",
+ yaz_log (LOG_DEBUG, "result set sort input=%s output=%s",
*input_setnames, output_setname);
sset = resultSetGet (zh, input_setnames[0]);
if (!sset)
*input_setnames, output_setname);
sset = resultSetGet (zh, input_setnames[0]);
if (!sset)
@@
-606,7
+610,7
@@
void resultSetSortSingle (ZebraHandle zh, NMEM nmem,
int term_index;
RSFD rfd;
int term_index;
RSFD rfd;
- logf (LOG_LOG, "resultSetSortSingle start");
+ yaz_log (LOG_LOG, "resultSetSortSingle start");
sset->sort_info->num_entries = 0;
sset->hits = 0;
sset->sort_info->num_entries = 0;
sset->hits = 0;
@@
-618,9
+622,9
@@
void resultSetSortSingle (ZebraHandle zh, NMEM nmem,
Z_SortKeySpec *sks = sort_sequence->specs[i];
Z_SortKey *sk;
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';
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
{
sort_criteria[i].relation = 'D';
else
{
@@
-641,20
+645,20
@@
void resultSetSortSingle (ZebraHandle zh, NMEM nmem,
switch (sk->which)
{
case Z_SortKey_sortField:
switch (sk->which)
{
case Z_SortKey_sortField:
- logf (LOG_DEBUG, "Sort: key %d is of type sortField", i+1);
+ yaz_log (LOG_DEBUG, "Sort: key %d is of type sortField", i+1);
zh->errCode = 207;
return;
case Z_SortKey_elementSpec:
zh->errCode = 207;
return;
case Z_SortKey_elementSpec:
- logf (LOG_DEBUG, "Sort: key %d is of type elementSpec", i+1);
+ yaz_log (LOG_DEBUG, "Sort: key %d is of type elementSpec", i+1);
zh->errCode = 207;
return;
case Z_SortKey_sortAttributes:
zh->errCode = 207;
return;
case Z_SortKey_sortAttributes:
- logf (LOG_DEBUG, "Sort: key %d is of type sortAttributes", i+1);
+ yaz_log (LOG_DEBUG, "Sort: key %d is of type sortAttributes", i+1);
sort_criteria[i].attrUse =
zebra_maps_sort (zh->reg->zebra_maps,
sk->u.sortAttributes,
&sort_criteria[i].numerical);
sort_criteria[i].attrUse =
zebra_maps_sort (zh->reg->zebra_maps,
sk->u.sortAttributes,
&sort_criteria[i].numerical);
- logf (LOG_DEBUG, "use value = %d", sort_criteria[i].attrUse);
+ yaz_log (LOG_DEBUG, "use value = %d", sort_criteria[i].attrUse);
if (sort_criteria[i].attrUse == -1)
{
zh->errCode = 116;
if (sort_criteria[i].attrUse == -1)
{
zh->errCode = 116;
@@
-688,11
+692,11
@@
void resultSetSortSingle (ZebraHandle zh, NMEM nmem,
rset->rset_terms[i]->flags,
rset->rset_terms[i]->count);
rset->rset_terms[i]->flags,
rset->rset_terms[i]->count);
- *sort_status = Z_SortStatus_success;
- logf (LOG_LOG, "resultSetSortSingle end");
+ *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;
{
ZebraSet s;
@@
-718,7
+722,7
@@
void resultSetRank (ZebraHandle zh, ZebraSet zebraSet, RSET rset)
yaz_log (LOG_LOG, "resultSetRank");
yaz_log (LOG_LOG, "resultSetRank");
- rank_class = zebraRankLookup (zh, "rank-1");
+ rank_class = zebraRankLookup (zh, res_get_def(zh->res, "rank", "rank-1"));
rc = rank_class->control;
if (rset_read (rset, rfd, &key, &term_index))
rc = rank_class->control;
if (rset_read (rset, rfd, &key, &term_index))
@@
-766,7
+770,7
@@
ZebraRankClass zebraRankLookup (ZebraHandle zh, const char *name)
if (p && !p->init_flag)
{
if (p->control->create)
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;
p->init_flag = 1;
}
return p;