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
Make section_id part of multi-value sort (one sort chunk / section).
[idzebra-moved-to-github.git]
/
index
/
extract.c
diff --git
a/index/extract.c
b/index/extract.c
index
32b92ec
..
82544f5
100644
(file)
--- a/
index/extract.c
+++ b/
index/extract.c
@@
-1874,6
+1874,7
@@
void extract_flush_sort_keys(ZebraHandle zh, zint sysno,
struct sort_add_ent *next;
WRBUF wrbuf;
zint sysno;
struct sort_add_ent *next;
WRBUF wrbuf;
zint sysno;
+ zint section_id;
};
struct sort_add_ent *sort_ent_list = 0;
};
struct sort_add_ent *sort_ent_list = 0;
@@
-1881,10
+1882,12
@@
void extract_flush_sort_keys(ZebraHandle zh, zint sysno,
{
int ord = CAST_ZINT_TO_INT(key_in.mem[0]);
zint filter_sysno = key_in.mem[1];
{
int ord = CAST_ZINT_TO_INT(key_in.mem[0]);
zint filter_sysno = key_in.mem[1];
+ zint section_id = key_in.mem[2];
struct sort_add_ent **e = &sort_ent_list;
struct sort_add_ent **e = &sort_ent_list;
- while (*e && (*e)->ord != ord)
- e = &(*e)->next;
+ for (; *e; e = &(*e)->next)
+ if ((*e)->ord == ord && section_id == (*e)->section_id)
+ break;
if (!*e)
{
*e = nmem_malloc(nmem, sizeof(**e));
if (!*e)
{
*e = nmem_malloc(nmem, sizeof(**e));
@@
-1893,6
+1896,7
@@
void extract_flush_sort_keys(ZebraHandle zh, zint sysno,
(*e)->ord = ord;
(*e)->cmd = cmd;
(*e)->sysno = filter_sysno ? filter_sysno : sysno;
(*e)->ord = ord;
(*e)->cmd = cmd;
(*e)->sysno = filter_sysno ? filter_sysno : sysno;
+ (*e)->section_id = section_id;
}
wrbuf_write((*e)->wrbuf, str, slen);
}
wrbuf_write((*e)->wrbuf, str, slen);
@@
-1911,9
+1915,9
@@
void extract_flush_sort_keys(ZebraHandle zh, zint sysno,
}
zebra_sort_type(si, e->ord);
if (e->cmd == 1)
}
zebra_sort_type(si, e->ord);
if (e->cmd == 1)
- zebra_sort_add(si, e->wrbuf);
+ zebra_sort_add(si, e->section_id, e->wrbuf);
else
else
- zebra_sort_delete(si);
+ zebra_sort_delete(si, e->section_id);
wrbuf_destroy(e->wrbuf);
}
}
wrbuf_destroy(e->wrbuf);
}
}