X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=index%2Fzrpn.c;h=60d45e271d1d9c46f2da0ef1dce7929a9d1bb34e;hb=863d336f803da454e03f39ee2225719fed05021e;hp=4ec577cec3084f7970139fadec7f5411498fd966;hpb=b24dc9a2d7ed255ed3b4f4ba35f11656aa89ef03;p=idzebra-moved-to-github.git diff --git a/index/zrpn.c b/index/zrpn.c index 4ec577c..60d45e2 100644 --- a/index/zrpn.c +++ b/index/zrpn.c @@ -1,4 +1,4 @@ -/* $Id: zrpn.c,v 1.140 2004-06-16 21:29:49 adam Exp $ +/* $Id: zrpn.c,v 1.144 2004-08-20 14:44:46 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -164,7 +164,7 @@ struct grep_info { #ifdef TERM_COUNT int *term_no; #endif - ISAMS_P *isam_p_buf; + ISAMC_P *isam_p_buf; int isam_p_size; int isam_p_indx; ZebraHandle zh; @@ -194,12 +194,12 @@ static void add_isam_p (const char *name, const char *info, { if (p->isam_p_indx == p->isam_p_size) { - ISAMS_P *new_isam_p_buf; + ISAMC_P *new_isam_p_buf; #ifdef TERM_COUNT int *new_term_no; #endif p->isam_p_size = 2*p->isam_p_size + 100; - new_isam_p_buf = (ISAMS_P *) xmalloc (sizeof(*new_isam_p_buf) * + new_isam_p_buf = (ISAMC_P *) xmalloc (sizeof(*new_isam_p_buf) * p->isam_p_size); if (p->isam_p_buf) { @@ -1365,7 +1365,7 @@ static RSET rpn_search_APT_phrase (ZebraHandle zh, { char term_dst[IT_MAX_WORD+1]; RSET rset[60], result; - int i, rset_no = 0; + int rset_no = 0; struct grep_info grep_info; char *termz = normalize_term(zh, zapt, termz_org, stream, reg_type); const char *termp = termz; @@ -1391,9 +1391,6 @@ static RSET rpn_search_APT_phrase (ZebraHandle zh, if (rset_no == 0) { rset_null_parms parms; - - parms.rset_term = rset_term_create (termz, -1, rank_type, - zapt->term->which); return rset_create (rset_kind_null, &parms); } else if (rset_no == 1) @@ -1455,9 +1452,6 @@ static RSET rpn_search_APT_or_list (ZebraHandle zh, if (rset_no == 0) { rset_null_parms parms; - - parms.rset_term = rset_term_create (termz, -1, rank_type, - zapt->term->which); return rset_create (rset_kind_null, &parms); } result = rset[0]; @@ -1513,9 +1507,6 @@ static RSET rpn_search_APT_and_list (ZebraHandle zh, if (rset_no == 0) { rset_null_parms parms; - - parms.rset_term = rset_term_create (termz, -1, rank_type, - zapt->term->which); return rset_create (rset_kind_null, &parms); } result = rset[0]; @@ -1758,9 +1749,6 @@ static RSET rpn_search_APT_numeric (ZebraHandle zh, if (rset_no == 0) { rset_null_parms parms; - - parms.rset_term = rset_term_create (term_dst, -1, rank_type, - zapt->term->which); return rset_create (rset_kind_null, &parms); } result = rset[0]; @@ -1787,20 +1775,28 @@ static RSET rpn_search_APT_local (ZebraHandle zh, Z_AttributesPlusTerm *zapt, RSET result; RSFD rsfd; struct it_key key; + int sys; rset_temp_parms parms; - parms.rset_term = rset_term_create (termz, -1, rank_type, - zapt->term->which); parms.cmp = key_compare_it; parms.key_size = sizeof (struct it_key); parms.temp_path = res_get (zh->res, "setTmpDir"); result = rset_create (rset_kind_temp, &parms); rsfd = rset_open (result, RSETF_WRITE); - key.sysno = atoi (termz); + sys = atoi(termz); + if (sys <= 0) + sys = 1; +#if IT_KEY_NEW + key.mem[0] = sys; + key.mem[1] = 1; + key.len = 2; +#else + key.sysno = sys; key.seqno = 1; if (key.sysno <= 0) key.sysno = 1; +#endif rset_write (result, rsfd, &key); rset_close (result, rsfd); return result; @@ -1897,9 +1893,6 @@ static RSET rpn_sort_spec (ZebraHandle zh, Z_AttributesPlusTerm *zapt, sks->which = Z_SortKeySpec_null; sks->u.null = odr_nullval (); sort_sequence->specs[i] = sks; - - parms.rset_term = rset_term_create (termz, -1, rank_type, - zapt->term->which); return rset_create (rset_kind_null, &parms); } @@ -1940,20 +1933,12 @@ static RSET xpath_trunc(ZebraHandle zh, NMEM stream, if (grep_info_prepare (zh, 0 /* zapt */, &grep_info, '0', stream)) { rset_null_parms parms; - - parms.rset_term = rset_term_create (term, strlen(term), - flags, term_type); - parms.rset_term->nn = 0; return rset_create (rset_kind_null, &parms); } if (ord < 0) { rset_null_parms parms; - - parms.rset_term = rset_term_create (term, strlen(term), - flags, term_type); - parms.rset_term->nn = 0; return rset_create (rset_kind_null, &parms); } if (prefix_len) @@ -2390,7 +2375,7 @@ RSET rpn_search (ZebraHandle zh, NMEM nmem, struct scan_info_entry { char *term; - ISAMS_P isam_p; + ISAMC_P isam_p; }; struct scan_info { @@ -2414,8 +2399,8 @@ static int scan_handle (char *name, const char *info, int pos, void *client) scan_info->list[idx].term = (char *) odr_malloc (scan_info->odr, strlen(name + len_prefix)+1); strcpy (scan_info->list[idx].term, name + len_prefix); - assert (*info == sizeof(ISAMS_P)); - memcpy (&scan_info->list[idx].isam_p, info+1, sizeof(ISAMS_P)); + assert (*info == sizeof(ISAMC_P)); + memcpy (&scan_info->list[idx].isam_p, info+1, sizeof(ISAMC_P)); return 0; } @@ -2453,23 +2438,30 @@ static void scan_term_untrans (ZebraHandle zh, NMEM stream, int reg_type, static void count_set (RSET r, int *count) { - int psysno = 0; + zint psysno = 0; int kno = 0; struct it_key key; RSFD rfd; - int term_index; logf (LOG_DEBUG, "count_set"); *count = 0; rfd = rset_open (r, RSETF_READ); - while (rset_read (r, rfd, &key, &term_index)) + while (rset_read (r, rfd, &key)) { +#if IT_KEY_NEW + if (key.mem[0] != psysno) + { + psysno = key.mem[0]; + (*count)++; + } +#else if (key.sysno != psysno) { psysno = key.sysno; (*count)++; } +#endif kno++; } rset_close (r, rfd);