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
Allow @attr 2=102 for numeric index
[idzebra-moved-to-github.git]
/
index
/
rpnsearch.c
diff --git
a/index/rpnsearch.c
b/index/rpnsearch.c
index
1109a60
..
47c1c23
100644
(file)
--- a/
index/rpnsearch.c
+++ b/
index/rpnsearch.c
@@
-1,5
+1,5
@@
/* This file is part of the Zebra server.
/* This file is part of the Zebra server.
- Copyright (C) 2004-2013 Index Data
+ Copyright (C) Index Data
Zebra is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Zebra is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
@@
-187,7
+187,7
@@
static void esc_str(char *out_buf, size_t out_size,
assert(in_buf);
assert(out_size > 20);
*out_buf = '\0';
assert(in_buf);
assert(out_size > 20);
*out_buf = '\0';
- for (k = 0; k<in_size; k++)
+ for (k = 0; k < in_size; k++)
{
int c = in_buf[k] & 0xff;
int pc;
{
int c = in_buf[k] & 0xff;
int pc;
@@
-311,40
+311,23
@@
static int term_102_icu(zebra_map_t zm,
}
static int term_100_icu(zebra_map_t zm,
}
static int term_100_icu(zebra_map_t zm,
- const char **src, WRBUF term_dict, int space_split,
+ const char **src, WRBUF term_dict,
WRBUF display_term,
WRBUF display_term,
- int mode)
+ int mode,
+ size_t token_number)
{
size_t i;
const char *res_buf = 0;
size_t res_len = 0;
const char *display_buf;
size_t display_len;
{
size_t i;
const char *res_buf = 0;
size_t res_len = 0;
const char *display_buf;
size_t display_len;
- const char *s0 = *src, *s1;
-
- while (*s0 == ' ')
- s0++;
-
- if (*s0 == '\0')
- return 0;
-
- if (space_split)
- {
- s1 = s0;
- while (*s1 && *s1 != ' ')
- s1++;
- }
- else
- s1 = s0 + strlen(s0);
-
- *src = s1;
- zebra_map_tokenize_start(zm, s0, s1 - s0);
-
- if (!zebra_map_tokenize_next(zm, &res_buf, &res_len,
- &display_buf, &display_len))
+ zebra_map_tokenize_start(zm, *src, strlen(*src));
+ for (i = 0; i <= token_number; i++)
{
{
- return 0;
+ if (!zebra_map_tokenize_next(zm, &res_buf, &res_len,
+ &display_buf, &display_len))
+ return 0;
}
wrbuf_write(display_term, display_buf, display_len);
if (mode)
}
wrbuf_write(display_term, display_buf, display_len);
if (mode)
@@
-724,7
+707,7
@@
static void gen_regular_rel(WRBUF term_dict, int val, int islt)
else
dst[dst_p++] = d;
}
else
dst[dst_p++] = d;
}
- for (i = 0; i<pos; i++)
+ for (i = 0; i < pos; i++)
{
dst[dst_p++] = '[';
dst[dst_p++] = '0';
{
dst[dst_p++] = '[';
dst[dst_p++] = '0';
@@
-739,7
+722,7
@@
static void gen_regular_rel(WRBUF term_dict, int val, int islt)
{
/* match everything less than 10^(pos-1) */
strcat(dst, "0*");
{
/* match everything less than 10^(pos-1) */
strcat(dst, "0*");
- for (i = 1; i<pos; i++)
+ for (i = 1; i < pos; i++)
strcat(dst, "[0-9]?");
}
else
strcat(dst, "[0-9]?");
}
else
@@
-971,7
+954,7
@@
static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
WRBUF display_term,
const char *xpath_use,
struct ord_list **ol,
WRBUF display_term,
const char *xpath_use,
struct ord_list **ol,
- zebra_map_t zm);
+ zebra_map_t zm, size_t token_number);
ZEBRA_RES zebra_term_limits_APT(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
ZEBRA_RES zebra_term_limits_APT(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
@@
-1018,7
+1001,8
@@
static ZEBRA_RES search_term(ZebraHandle zh,
NMEM rset_nmem,
RSET *rset,
struct rset_key_control *kc,
NMEM rset_nmem,
RSET *rset,
struct rset_key_control *kc,
- zebra_map_t zm)
+ zebra_map_t zm,
+ size_t token_number)
{
ZEBRA_RES res;
struct ord_list *ol;
{
ZEBRA_RES res;
struct ord_list *ol;
@@
-1033,7
+1017,7
@@
static ZEBRA_RES search_term(ZebraHandle zh,
res = string_term(zh, zapt, term_sub, term_dict,
attributeSet, stream, grep_info,
index_type, complete_flag,
res = string_term(zh, zapt, term_sub, term_dict,
attributeSet, stream, grep_info,
index_type, complete_flag,
- display_term, xpath_use, &ol, zm);
+ display_term, xpath_use, &ol, zm, token_number);
wrbuf_destroy(term_dict);
if (res == ZEBRA_OK && *term_sub)
{
wrbuf_destroy(term_dict);
if (res == ZEBRA_OK && *term_sub)
{
@@
-1061,7
+1045,7
@@
static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
WRBUF display_term,
const char *xpath_use,
struct ord_list **ol,
WRBUF display_term,
const char *xpath_use,
struct ord_list **ol,
- zebra_map_t zm)
+ zebra_map_t zm, size_t token_number)
{
int r;
AttrType truncation;
{
int r;
AttrType truncation;
@@
-1100,7
+1084,7
@@
static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
wrbuf_putc(term_dict, '(');
wrbuf_putc(term_dict, '(');
- for (i = 0; i<ord_len; i++)
+ for (i = 0; i < ord_len; i++)
{
wrbuf_putc(term_dict, 1); /* our internal regexp escape char */
wrbuf_putc(term_dict, ord_buf[i]);
{
wrbuf_putc(term_dict, 1); /* our internal regexp escape char */
wrbuf_putc(term_dict, ord_buf[i]);
@@
-1125,7
+1109,7
@@
static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
{
case -1: /* not specified */
case 100: /* do not truncate */
{
case -1: /* not specified */
case 100: /* do not truncate */
- if (!term_100_icu(zm, &termp, term_dict, space_split, display_term, 0))
+ if (!term_100_icu(zm, &termp, term_dict, display_term, 0, token_number))
{
*term_sub = 0;
return ZEBRA_OK;
{
*term_sub = 0;
return ZEBRA_OK;
@@
-1139,21
+1123,21
@@
static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
}
break;
case 1: /* right truncation */
}
break;
case 1: /* right truncation */
- if (!term_100_icu(zm, &termp, term_dict, space_split, display_term, 1))
+ if (!term_100_icu(zm, &termp, term_dict, display_term, 1, token_number))
{
*term_sub = 0;
return ZEBRA_OK;
}
break;
case 2:
{
*term_sub = 0;
return ZEBRA_OK;
}
break;
case 2:
- if (!term_100_icu(zm, &termp, term_dict, space_split, display_term, 2))
+ if (!term_100_icu(zm, &termp, term_dict, display_term, 2, token_number))
{
*term_sub = 0;
return ZEBRA_OK;
}
break;
case 3:
{
*term_sub = 0;
return ZEBRA_OK;
}
break;
case 3:
- if (!term_100_icu(zm, &termp, term_dict, space_split, display_term, 3))
+ if (!term_100_icu(zm, &termp, term_dict, display_term, 3, token_number))
{
*term_sub = 0;
return ZEBRA_OK;
{
*term_sub = 0;
return ZEBRA_OK;
@@
-1424,7
+1408,8
@@
static ZEBRA_RES search_terms_chrmap(ZebraHandle zh,
rank_type,
xpath_use, rset_nmem,
&(*result_sets)[*num_result_sets],
rank_type,
xpath_use, rset_nmem,
&(*result_sets)[*num_result_sets],
- kc, zm);
+ kc, zm,
+ *num_result_sets);
if (res != ZEBRA_OK)
{
int i;
if (res != ZEBRA_OK)
{
int i;
@@
-1584,7
+1569,7
@@
static ZEBRA_RES rpn_search_APT_phrase(ZebraHandle zh,
if (res != ZEBRA_OK)
{
int i;
if (res != ZEBRA_OK)
{
int i;
- for (i = 0; i<num_result_sets; i++)
+ for (i = 0; i < num_result_sets; i++)
rset_delete(result_sets[i]);
return res;
}
rset_delete(result_sets[i]);
return res;
}
@@
-1640,7
+1625,7
@@
static ZEBRA_RES rpn_search_APT_or_list(ZebraHandle zh,
if (res != ZEBRA_OK)
return res;
if (res != ZEBRA_OK)
return res;
- for (i = 0; i<num_result_sets; i++)
+ for (i = 0; i < num_result_sets; i++)
{
RSET first_set = 0;
res = search_position(zh, zapt, attributeSet,
{
RSET first_set = 0;
res = search_position(zh, zapt, attributeSet,
@@
-1649,7
+1634,7
@@
static ZEBRA_RES rpn_search_APT_or_list(ZebraHandle zh,
kc);
if (res != ZEBRA_OK)
{
kc);
if (res != ZEBRA_OK)
{
- for (i = 0; i<num_result_sets; i++)
+ for (i = 0; i < num_result_sets; i++)
rset_delete(result_sets[i]);
return res;
}
rset_delete(result_sets[i]);
return res;
}
@@
-1708,7
+1693,7
@@
static ZEBRA_RES rpn_search_APT_and_list(ZebraHandle zh,
kc);
if (res != ZEBRA_OK)
return res;
kc);
if (res != ZEBRA_OK)
return res;
- for (i = 0; i<num_result_sets; i++)
+ for (i = 0; i < num_result_sets; i++)
{
RSET first_set = 0;
res = search_position(zh, zapt, attributeSet,
{
RSET first_set = 0;
res = search_position(zh, zapt, attributeSet,
@@
-1717,7
+1702,7
@@
static ZEBRA_RES rpn_search_APT_and_list(ZebraHandle zh,
kc);
if (res != ZEBRA_OK)
{
kc);
if (res != ZEBRA_OK)
{
- for (i = 0; i<num_result_sets; i++)
+ for (i = 0; i < num_result_sets; i++)
rset_delete(result_sets[i]);
return res;
}
rset_delete(result_sets[i]);
return res;
}
@@
-1815,6
+1800,7
@@
static int numeric_relation(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
gen_regular_rel(term_dict, term_value+1, 0);
break;
case -1:
gen_regular_rel(term_dict, term_value+1, 0);
break;
case -1:
+ case 102:
case 3:
yaz_log(log_level_rpn, "Relation =");
if (!term_100(zm, term_sub, term_num, 1, display_term))
case 3:
yaz_log(log_level_rpn, "Relation =");
if (!term_100(zm, term_sub, term_num, 1, display_term))
@@
-2063,7
+2049,7
@@
static ZEBRA_RES rpn_sort_spec(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
sort_sequence->specs = (Z_SortKeySpec **)
nmem_malloc(stream, sort_sequence->num_specs *
sizeof(*sort_sequence->specs));
sort_sequence->specs = (Z_SortKeySpec **)
nmem_malloc(stream, sort_sequence->num_specs *
sizeof(*sort_sequence->specs));
- for (i = 0; i<sort_sequence->num_specs; i++)
+ for (i = 0; i < sort_sequence->num_specs; i++)
sort_sequence->specs[i] = 0;
}
if (zapt->term->which != Z_Term_general)
sort_sequence->specs[i] = 0;
}
if (zapt->term->which != Z_Term_general)
@@
-2155,7
+2141,7
@@
static RSET xpath_trunc(ZebraHandle zh, NMEM stream,
const char *flags = "void";
wrbuf_putc(term_dict, '(');
const char *flags = "void";
wrbuf_putc(term_dict, '(');
- for (i = 0; i<ord_len; i++)
+ for (i = 0; i < ord_len; i++)
{
wrbuf_putc(term_dict, 1);
wrbuf_putc(term_dict, ord_buf[i]);
{
wrbuf_putc(term_dict, 1);
wrbuf_putc(term_dict, ord_buf[i]);
@@
-2197,7
+2183,7
@@
ZEBRA_RES rpn_search_xpath(ZebraHandle zh,
}
yaz_log(YLOG_DEBUG, "xpath len=%d", xpath_len);
}
yaz_log(YLOG_DEBUG, "xpath len=%d", xpath_len);
- for (i = 0; i<xpath_len; i++)
+ for (i = 0; i < xpath_len; i++)
{
yaz_log(log_level_rpn, "XPATH %d %s", i, xpath[i].part);
{
yaz_log(log_level_rpn, "XPATH %d %s", i, xpath[i].part);
@@
-2570,7
+2556,7
@@
ZEBRA_RES rpn_search_top(ZebraHandle zh, Z_RPNStructure *zs,
if (res != ZEBRA_OK)
{
int i;
if (res != ZEBRA_OK)
{
int i;
- for (i = 0; i<num_result_sets; i++)
+ for (i = 0; i < num_result_sets; i++)
rset_delete(result_sets[i]);
*result_set = 0;
}
rset_delete(result_sets[i]);
*result_set = 0;
}
@@
-2613,7
+2599,7
@@
ZEBRA_RES rpn_search_structure(ZebraHandle zh, Z_RPNStructure *zs,
if (res != ZEBRA_OK)
{
int i;
if (res != ZEBRA_OK)
{
int i;
- for (i = 0; i<num_result_sets_l; i++)
+ for (i = 0; i < num_result_sets_l; i++)
rset_delete(result_sets_l[i]);
return res;
}
rset_delete(result_sets_l[i]);
return res;
}
@@
-2626,9
+2612,9
@@
ZEBRA_RES rpn_search_structure(ZebraHandle zh, Z_RPNStructure *zs,
if (res != ZEBRA_OK)
{
int i;
if (res != ZEBRA_OK)
{
int i;
- for (i = 0; i<num_result_sets_l; i++)
+ for (i = 0; i < num_result_sets_l; i++)
rset_delete(result_sets_l[i]);
rset_delete(result_sets_l[i]);
- for (i = 0; i<num_result_sets_r; i++)
+ for (i = 0; i < num_result_sets_r; i++)
rset_delete(result_sets_r[i]);
return res;
}
rset_delete(result_sets_r[i]);
return res;
}