X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzrpn.c;h=951f83f47d8d18758bcb88e3d761be7c04ea57d7;hb=e8393fc8e78d777294f6eabf4029b90d566cf978;hp=f3ef7a8afade7b2e8209bf42883a170efa8a2c7c;hpb=6cb032fd2ece4742e3516e0941507143f677e5cd;p=idzebra-moved-to-github.git diff --git a/index/zrpn.c b/index/zrpn.c index f3ef7a8..951f83f 100644 --- a/index/zrpn.c +++ b/index/zrpn.c @@ -1,4 +1,4 @@ -/* $Id: zrpn.c,v 1.191 2005-05-11 12:39:37 adam Exp $ +/* $Id: zrpn.c,v 1.193 2005-05-31 13:01:37 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -173,8 +173,8 @@ struct grep_info { ZebraSet termset; }; -static void term_untrans(ZebraHandle zh, int reg_type, - char *dst, const char *src) +void zebra_term_untrans(ZebraHandle zh, int reg_type, + char *dst, const char *src) { int len = 0; while (*src) @@ -238,7 +238,7 @@ static void add_isam_p(const char *name, const char *info, int su_code = 0; int len = key_SU_decode (&su_code, name); - term_untrans (p->zh, p->reg_type, term_tmp, name+len+1); + zebra_term_untrans (p->zh, p->reg_type, term_tmp, name+len+1); yaz_log(log_level_rpn, "grep: %d %c %s", su_code, name[len], term_tmp); zebraExplain_lookup_ord (p->zh->reg->zei, su_code, &db, &set, &use); @@ -1608,7 +1608,7 @@ static ZEBRA_RES rpn_search_APT_phrase(ZebraHandle zh, if (res != ZEBRA_OK) return res; if (num_result_sets == 0) - *rset = rsnull_create (rset_nmem, kc); + *rset = rsnull_create (rset_nmem, kc, 0); else if (num_result_sets == 1) *rset = result_sets[0]; else @@ -1646,11 +1646,11 @@ static ZEBRA_RES rpn_search_APT_or_list(ZebraHandle zh, if (res != ZEBRA_OK) return res; if (num_result_sets == 0) - *rset = rsnull_create (rset_nmem, kc); + *rset = rsnull_create (rset_nmem, kc, 0); else if (num_result_sets == 1) *rset = result_sets[0]; else - *rset = rsmulti_or_create(rset_nmem, kc, kc->scope, + *rset = rsmulti_or_create(rset_nmem, kc, kc->scope, 0 /* termid */, num_result_sets, result_sets); if (!*rset) return ZEBRA_FAIL; @@ -1683,7 +1683,7 @@ static ZEBRA_RES rpn_search_APT_and_list(ZebraHandle zh, if (res != ZEBRA_OK) return res; if (num_result_sets == 0) - *rset = rsnull_create (rset_nmem, kc); + *rset = rsnull_create (rset_nmem, kc, 0); else if (num_result_sets == 1) *rset = result_sets[0]; else @@ -1956,7 +1956,7 @@ static ZEBRA_RES rpn_search_APT_numeric(ZebraHandle zh, return ZEBRA_FAIL; } if (num_result_sets == 0) - *rset = rsnull_create(rset_nmem, kc); + *rset = rsnull_create(rset_nmem, kc, 0); if (num_result_sets == 1) *rset = result_sets[0]; else @@ -1998,6 +1998,7 @@ static ZEBRA_RES rpn_sort_spec(ZebraHandle zh, Z_AttributesPlusTerm *zapt, oid_value attributeSet, NMEM stream, Z_SortKeySpecList *sort_sequence, const char *rank_type, + NMEM rset_nmem, RSET *rset, struct rset_key_control *kc) { @@ -2066,7 +2067,7 @@ static ZEBRA_RES rpn_sort_spec(ZebraHandle zh, Z_AttributesPlusTerm *zapt, sks->which = Z_SortKeySpec_null; sks->u.null = odr_nullval (); sort_sequence->specs[i] = sks; - *rset = rsnull_create (NULL, kc); + *rset = rsnull_create (rset_nmem, kc, 0); return ZEBRA_OK; } @@ -2106,10 +2107,10 @@ static RSET xpath_trunc(ZebraHandle zh, NMEM stream, const char *flags = "void"; if (grep_info_prepare(zh, 0 /* zapt */, &grep_info, '0') == ZEBRA_FAIL) - return rsnull_create(rset_nmem, kc); + return rsnull_create(rset_nmem, kc, 0); if (ord < 0) - return rsnull_create(rset_nmem, kc); + return rsnull_create(rset_nmem, kc, 0); if (prefix_len) term_dict[prefix_len++] = '|'; else @@ -2327,7 +2328,7 @@ static ZEBRA_RES rpn_search_APT(ZebraHandle zh, Z_AttributesPlusTerm *zapt, if (sort_flag) return rpn_sort_spec(zh, zapt, attributeSet, stream, sort_sequence, - rank_type, rset, kc); + rank_type, rset_nmem, rset, kc); xpath_len = parse_xpath(zh, zapt, attributeSet, xpath, 10, stream); if (xpath_len >= 0) { @@ -2506,7 +2507,7 @@ ZEBRA_RES rpn_search_structure(ZebraHandle zh, Z_RPNStructure *zs, break; case Z_Operator_or: rset = rsmulti_or_create(rset_nmem, kc, - kc->scope, + kc->scope, 0, /* termid */ *num_result_sets, *result_sets); break; case Z_Operator_and_not: @@ -2633,13 +2634,13 @@ static int scan_handle (char *name, const char *info, int pos, void *client) return 0; } -static void scan_term_untrans (ZebraHandle zh, NMEM stream, int reg_type, - char **dst, const char *src) +void zebra_term_untrans_iconv(ZebraHandle zh, NMEM stream, int reg_type, + char **dst, const char *src) { char term_src[IT_MAX_WORD]; char term_dst[IT_MAX_WORD]; - term_untrans (zh, reg_type, term_src, src); + zebra_term_untrans (zh, reg_type, term_src, src); if (zh->iconv_from_utf8 != 0) { @@ -2925,8 +2926,8 @@ ZEBRA_RES rpn_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, if (lo >= 0) { /* get result set for first term */ - scan_term_untrans(zh, stream->mem, reg_id, - &glist[lo].term, mterm); + zebra_term_untrans_iconv(zh, stream->mem, reg_id, + &glist[lo].term, mterm); rset = rset_trunc(zh, &scan_info_array[j0].list[ptr[j0]].isam_p, 1, glist[lo].term, strlen(glist[lo].term), NULL, 0, zapt->term->which, rset_nmem, @@ -2953,7 +2954,8 @@ ZEBRA_RES rpn_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, zapt->term->which,rset_nmem, kc, kc->scope); rset = rsmulti_or_create(rset_nmem, kc, - 2, kc->scope, rsets); + kc->scope, 0 /* termid */, + 2, rsets); } ptr[j]++; } @@ -2968,7 +2970,8 @@ ZEBRA_RES rpn_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, rsets[1] = rset_dup(limit_set); rset = rsmulti_and_create(rset_nmem, kc, - kc->scope, 2, rsets); + kc->scope, + 2, rsets); } /* count it */ count_set(rset, &glist[lo].occurrences); @@ -3012,13 +3015,13 @@ ZEBRA_RES rpn_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, if (j0 == -1) break; - scan_term_untrans (zh, stream->mem, reg_id, - &glist[lo].term, mterm); + zebra_term_untrans_iconv(zh, stream->mem, reg_id, + &glist[lo].term, mterm); rset = rset_trunc (zh, &scan_info_array[j0].list[before-1-ptr[j0]].isam_p, 1, glist[lo].term, strlen(glist[lo].term), - NULL, 0, zapt->term->which,rset_nmem, + NULL, 0, zapt->term->which, rset_nmem, kc, kc->scope); ptr[j0]++; @@ -3040,7 +3043,7 @@ ZEBRA_RES rpn_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, zapt->term->which, rset_nmem, kc, kc->scope); rset = rsmulti_or_create(rset_nmem, kc, - 2, kc->scope, rsets); + kc->scope, 0 /* termid */, 2, rsets); ptr[j]++; }