static int term_100_icu(zebra_map_t zm,
const char **src, WRBUF term_dict, int space_split,
WRBUF display_term,
- int right_trunc)
+ int mode)
{
int i;
const char *res_buf = 0;
return 0;
}
wrbuf_write(display_term, display_buf, display_len);
- if (right_trunc)
+ if (mode)
{
/* ICU sort keys seem to be of the form
basechars \x01 accents \x01 length
}
res_len = i; /* reduce res_len */
}
+ if (mode & 2)
+ wrbuf_puts(term_dict, ".*");
for (i = 0; i < res_len; i++)
{
if (strchr(REGEX_CHARS "\\", res_buf[i]))
wrbuf_putc(term_dict, res_buf[i]);
}
- if (right_trunc)
+ if (mode & 1)
wrbuf_puts(term_dict, ".*");
+ else if (mode)
+ wrbuf_puts(term_dict, "\x01\x01.*");
+
return 1;
}
return ZEBRA_OK;
}
break;
+ case 2:
+ if (!term_100_icu(zm, &termp, term_dict, space_split, display_term, 2))
+ {
+ *term_sub = 0;
+ return ZEBRA_OK;
+ }
+ break;
+ case 3:
+ if (!term_100_icu(zm, &termp, term_dict, space_split, display_term, 3))
+ {
+ *term_sub = 0;
+ return ZEBRA_OK;
+ }
+ break;
default:
zebra_setError_zint(zh,
YAZ_BIB1_UNSUPP_TRUNCATION_ATTRIBUTE,
Z_AttributesPlusTerm *zapt,
const char *termz,
const Odr_oid *attributeSet,
+ zint hits_limit,
NMEM stream,
const char *index_type,
int complete_flag,
ZEBRA_RES res;
struct grep_info grep_info;
int alloc_sets = 0;
- zint hits_limit_value;
+ zint hits_limit_value = hits_limit;
const char *term_ref_id_str = 0;
zebra_term_limits_APT(zh, zapt, &hits_limit_value, &term_ref_id_str,
}
else if (!strcmp(search_type, "numeric"))
{
- res = rpn_search_APT_numeric(zh, zapt, termz, attributeSet, stream,
+ res = rpn_search_APT_numeric(zh, zapt, termz, attributeSet, hits_limit,
+ stream,
index_type, complete_flag, rank_type,
xpath_use,
rset_nmem,