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
Honor approximative limits for scan (type 12).
[idzebra-moved-to-github.git]
/
index
/
zsets.c
diff --git
a/index/zsets.c
b/index/zsets.c
index
74a4733
..
1a4686b
100644
(file)
--- a/
index/zsets.c
+++ b/
index/zsets.c
@@
-1,4
+1,4
@@
-/* $Id: zsets.c,v 1.118 2007-01-17 13:22:53 adam Exp $
+/* $Id: zsets.c,v 1.124 2007-10-31 16:56:14 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
Copyright (C) 1995-2007
Index Data ApS
@@
-100,7
+100,6
@@
static ZEBRA_RES resultSetSearch(ZebraHandle zh, NMEM nmem, NMEM rset_nmem,
Z_RPNQuery *rpn, ZebraSet sset)
{
RSET rset = 0;
Z_RPNQuery *rpn, ZebraSet sset)
{
RSET rset = 0;
- oident *attrset;
Z_SortKeySpecList *sort_sequence;
int sort_status, i;
ZEBRA_RES res = ZEBRA_OK;
Z_SortKeySpecList *sort_sequence;
int sort_status, i;
ZEBRA_RES res = ZEBRA_OK;
@@
-114,11
+113,9
@@
static ZEBRA_RES resultSetSearch(ZebraHandle zh, NMEM nmem, NMEM rset_nmem,
for (i = 0; i<sort_sequence->num_specs; i++)
sort_sequence->specs[i] = 0;
for (i = 0; i<sort_sequence->num_specs; i++)
sort_sequence->specs[i] = 0;
- attrset = oid_getentbyoid (rpn->attributeSetId);
-
rpn_get_top_approx_limit(zh, rpn->RPNStructure, &sset->approx_limit);
rpn_get_top_approx_limit(zh, rpn->RPNStructure, &sset->approx_limit);
- res = rpn_search_top(zh, rpn->RPNStructure, attrset->value,
+ res = rpn_search_top(zh, rpn->RPNStructure, rpn->attributeSetId,
nmem, rset_nmem,
sort_sequence,
sset->num_bases, sset->basenames,
nmem, rset_nmem,
sort_sequence,
sset->num_bases, sset->basenames,
@@
-545,7
+542,7
@@
struct sortKeyInfo {
int relation;
int ord;
int numerical;
int relation;
int ord;
int numerical;
- int index_type;
+ const char *index_type;
};
void resultSetInsertSort(ZebraHandle zh, ZebraSet sset,
};
void resultSetInsertSort(ZebraHandle zh, ZebraSet sset,
@@
-582,7
+579,7
@@
void resultSetInsertSort(ZebraHandle zh, ZebraSet sset,
char this_entry_org[1024];
char other_entry_org[1024];
double diff;
char this_entry_org[1024];
char other_entry_org[1024];
double diff;
- int index_type = criteria[j].index_type;
+ const char *index_type = criteria[j].index_type;
zebra_term_untrans(zh, index_type, this_entry_org,
this_entry_buf);
zebra_term_untrans(zh, index_type, other_entry_org,
zebra_term_untrans(zh, index_type, this_entry_org,
this_entry_buf);
zebra_term_untrans(zh, index_type, other_entry_org,
@@
-888,7
+885,7
@@
ZEBRA_RES resultSetSortSingle(ZebraHandle zh, NMEM nmem,
sort_criteria[i].ord =
zebraExplain_lookup_attr_str(zh->reg->zei,
zinfo_index_category_sort,
sort_criteria[i].ord =
zebraExplain_lookup_attr_str(zh->reg->zei,
zinfo_index_category_sort,
- -1, sk->u.sortField);
+ 0, sk->u.sortField);
if (sks->which != Z_SortKeySpec_null
&& sort_criteria[i].ord == -1)
{
if (sks->which != Z_SortKeySpec_null
&& sort_criteria[i].ord == -1)
{
@@
-936,6
+933,14
@@
ZEBRA_RES resultSetSortSingle(ZebraHandle zh, NMEM nmem,
kno++;
if (this_sys != psysno)
{
kno++;
if (this_sys != psysno)
{
+ if ((sset->hits & 255) == 0 && zh->break_handler_func)
+ {
+ if (zh->break_handler_func(zh->break_handler_data))
+ {
+ rset_set_hits_limit(rset, 0);
+ break;
+ }
+ }
(sset->hits)++;
psysno = this_sys;
resultSetInsertSort(zh, sset,
(sset->hits)++;
psysno = this_sys;
resultSetInsertSort(zh, sset,
@@
-997,7
+1002,6
@@
ZEBRA_RES resultSetRank(ZebraHandle zh, ZebraSet zebraSet,
terms = (TERMID *) nmem_malloc(nmem, sizeof(*terms)*n);
rset_getterms(rset, terms, n, &numTerms);
terms = (TERMID *) nmem_malloc(nmem, sizeof(*terms)*n);
rset_getterms(rset, terms, n, &numTerms);
-
rank_class = zebraRankLookup(zh, rank_handler_name);
if (!rank_class)
{
rank_class = zebraRankLookup(zh, rank_handler_name);
if (!rank_class)
{
@@
-1011,10
+1015,8
@@
ZEBRA_RES resultSetRank(ZebraHandle zh, ZebraSet zebraSet,
struct rank_control *rc = rank_class->control;
int score;
zint count = 0;
struct rank_control *rc = rank_class->control;
int score;
zint count = 0;
-
- void *handle =
- (*rc->begin) (zh->reg, rank_class->class_handle, rset, nmem,
- terms, numTerms);
+ void *handle = (*rc->begin) (zh->reg, rank_class->class_handle, rset,
+ nmem, terms, numTerms);
zint psysno = 0; /* previous doc id / sys no */
zint pstaticrank = 0; /* previous static rank */
int stop_flag = 0;
zint psysno = 0; /* previous doc id / sys no */
zint pstaticrank = 0; /* previous static rank */
int stop_flag = 0;
@@
-1028,20
+1030,16
@@
ZEBRA_RES resultSetRank(ZebraHandle zh, ZebraSet zebraSet,
key_logdump_txt(log_level_searchhits, &key, termid->name);
if (this_sys != psysno)
{ /* new record .. */
key_logdump_txt(log_level_searchhits, &key, termid->name);
if (this_sys != psysno)
{ /* new record .. */
- if (zh->busy_handler_func)
+ if (!(rfd->counted_items & 255) && zh->break_handler_func)
{
{
- if (zh->busy_handler_func(zh->busy_handler_data))
+ if (zh->break_handler_func(zh->break_handler_data))
{
{
- yaz_log(YLOG_LOG, "Session end. Stop search");
- zebraSet->estimated_hit_count = 1;
- break;
+ yaz_log(YLOG_LOG, "Aborted search");
+ stop_flag = 1;
}
}
if (rfd->counted_items > rset->hits_limit)
}
}
if (rfd->counted_items > rset->hits_limit)
- {
- zebraSet->estimated_hit_count = 1;
- break;
- }
+ stop_flag = 1;
if (psysno)
{ /* only if we did have a previous record */
score = (*rc->calc) (handle, psysno, pstaticrank,
if (psysno)
{ /* only if we did have a previous record */
score = (*rc->calc) (handle, psysno, pstaticrank,
@@
-1049,9
+1047,13
@@
ZEBRA_RES resultSetRank(ZebraHandle zh, ZebraSet zebraSet,
/* insert the hit. A=Ascending */
resultSetInsertRank (zh, sort_info, psysno, score, 'A');
count++;
/* insert the hit. A=Ascending */
resultSetInsertRank (zh, sort_info, psysno, score, 'A');
count++;
- if (stop_flag)
- break;
}
}
+ if (stop_flag)
+ {
+ zebraSet->estimated_hit_count = 1;
+ rset_set_hits_limit(rset, 0);
+ break;
+ }
psysno = this_sys;
if (zh->m_staticrank)
pstaticrank = key.mem[0];
psysno = this_sys;
if (zh->m_staticrank)
pstaticrank = key.mem[0];
@@
-1202,7
+1204,11
@@
ZEBRA_RES zebra_result_set_term_info(ZebraHandle zh, const char *setname,
if (ret == (size_t)(-1))
*termlen = 0;
else
if (ret == (size_t)(-1))
*termlen = 0;
else
+ {
+ yaz_iconv(zh->iconv_from_utf8, 0, 0,
+ &outbuf, &outleft);
*termlen = outbuf - termbuf;
*termlen = outbuf - termbuf;
+ }
}
else
{
}
else
{
@@
-1267,7
+1273,7
@@
ZEBRA_RES zebra_snippets_hit_vector(ZebraHandle zh, const char *setname,
struct ord_list *ol;
for (ol = termid->ol; ol; ol = ol->next)
{
struct ord_list *ol;
for (ol = termid->ol; ol; ol = ol->next)
{
- zebra_snippets_append(snippets, key.mem[key.len-1],
+ zebra_snippets_append(snippets, key.mem[key.len-1], 0,
ol->ord, termid->name);
}
}
ol->ord, termid->name);
}
}