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
Fixed bug #815: Extended Services "delete" requires a dummy "record" to
[idzebra-moved-to-github.git]
/
index
/
extract.c
diff --git
a/index/extract.c
b/index/extract.c
index
b140531
..
614c0f1
100644
(file)
--- a/
index/extract.c
+++ b/
index/extract.c
@@
-1,4
+1,4
@@
-/* $Id: extract.c,v 1.242 2006-11-25 09:15:19 adam Exp $
+/* $Id: extract.c,v 1.246 2006-12-18 23:40:07 adam Exp $
Copyright (C) 1995-2006
Index Data ApS
Copyright (C) 1995-2006
Index Data ApS
@@
-651,6
+651,11
@@
ZEBRA_RES zebra_extract_record_stream(ZebraHandle zh,
*sysno = rec->sysno;
recordAttr = rec_init_attr (zh->reg->zei, rec);
*sysno = rec->sysno;
recordAttr = rec_init_attr (zh->reg->zei, rec);
+ if (extractCtrl.staticrank < 0)
+ {
+ yaz_log(YLOG_WARN, "Negative staticrank for record. Set to 0");
+ extractCtrl.staticrank = 0;
+ }
recordAttr->staticrank = extractCtrl.staticrank;
if (matchStr)
recordAttr->staticrank = extractCtrl.staticrank;
if (matchStr)
@@
-1059,8
+1064,7
@@
ZEBRA_RES zebra_rec_keys_to_snippets(ZebraHandle zh,
struct it_key key;
while (zebra_rec_keys_read(reckeys, &str, &slen, &key))
{
struct it_key key;
while (zebra_rec_keys_read(reckeys, &str, &slen, &key))
{
- char dst_buf[IT_MAX_WORD];
- char *dst_term = dst_buf;
+ char *dst_term = 0;
int ord;
zint seqno;
int index_type;
int ord;
zint seqno;
int index_type;
@@
-1185,20
+1189,12
@@
static void extract_add_incomplete_field(RecWord *p)
ZebraHandle zh = p->extractCtrl->handle;
const char *b = p->term_buf;
int remain = p->term_len;
ZebraHandle zh = p->extractCtrl->handle;
const char *b = p->term_buf;
int remain = p->term_len;
+ int first = 1;
const char **map = 0;
if (remain > 0)
map = zebra_maps_input(zh->reg->zebra_maps, p->index_type, &b, remain, 0);
const char **map = 0;
if (remain > 0)
map = zebra_maps_input(zh->reg->zebra_maps, p->index_type, &b, remain, 0);
- if (map)
- {
- if (zebra_maps_is_first_in_field(zh->reg->zebra_maps, p->index_type))
- {
- /* first in field marker */
- extract_add_string(p, FIRST_IN_FIELD_STR, FIRST_IN_FIELD_LEN);
- p->seqno++;
- }
- }
while (map)
{
char buf[IT_MAX_WORD+1];
while (map)
{
char buf[IT_MAX_WORD+1];
@@
-1231,6
+1227,17
@@
static void extract_add_incomplete_field(RecWord *p)
}
if (!i)
return;
}
if (!i)
return;
+
+ if (first)
+ {
+ first = 0;
+ if (zebra_maps_is_first_in_field(zh->reg->zebra_maps, p->index_type))
+ {
+ /* first in field marker */
+ extract_add_string(p, FIRST_IN_FIELD_STR, FIRST_IN_FIELD_LEN);
+ p->seqno++;
+ }
+ }
extract_add_string (p, buf, i);
p->seqno++;
}
extract_add_string (p, buf, i);
p->seqno++;
}
@@
-1354,24
+1361,30
@@
static void extract_schema_add(struct recExtractCtrl *p, Odr_oid *oid)
void extract_flush_sort_keys(ZebraHandle zh, zint sysno,
int cmd, zebra_rec_keys_t reckeys)
{
void extract_flush_sort_keys(ZebraHandle zh, zint sysno,
int cmd, zebra_rec_keys_t reckeys)
{
+#if 0
+ yaz_log(YLOG_LOG, "extract_flush_sort_keys cmd=%d sysno=" ZINT_FORMAT,
+ cmd, sysno);
+ extract_rec_keys_log(zh, cmd, reckeys, YLOG_LOG);
+#endif
+
if (zebra_rec_keys_rewind(reckeys))
{
if (zebra_rec_keys_rewind(reckeys))
{
- SortIdx sortIdx = zh->reg->sortIdx;
+ zebra_sort_index_t si = zh->reg->sort_index;
size_t slen;
const char *str;
struct it_key key_in;
size_t slen;
const char *str;
struct it_key key_in;
- sortIdx_sysno (sortIdx, sysno);
+ zebra_sort_sysno(si, sysno);
while (zebra_rec_keys_read(reckeys, &str, &slen, &key_in))
{
int ord = CAST_ZINT_TO_INT(key_in.mem[0]);
while (zebra_rec_keys_read(reckeys, &str, &slen, &key_in))
{
int ord = CAST_ZINT_TO_INT(key_in.mem[0]);
- sortIdx_type(sortIdx, ord);
+ zebra_sort_type(si, ord);
if (cmd == 1)
if (cmd == 1)
- sortIdx_add(sortIdx, str, slen);
+ zebra_sort_add(si, str, slen);
else
else
- sortIdx_add(sortIdx, "", 1);
+ zebra_sort_delete(si);
}
}
}
}
}
}