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
More optimizations of the melm matching.
[idzebra-moved-to-github.git]
/
util
/
zebramap.c
diff --git
a/util/zebramap.c
b/util/zebramap.c
index
3ffb276
..
b075257
100644
(file)
--- a/
util/zebramap.c
+++ b/
util/zebramap.c
@@
-1,4
+1,4
@@
-/* $Id: zebramap.c,v 1.51 2006-06-23 11:21:38 adam Exp $
+/* $Id: zebramap.c,v 1.53 2006-09-08 14:41:00 adam Exp $
Copyright (C) 1995-2006
Index Data ApS
Copyright (C) 1995-2006
Index Data ApS
@@
-28,7
+28,7
@@
#include <attrfind.h>
#include <yaz/yaz-util.h>
#include <attrfind.h>
#include <yaz/yaz-util.h>
-#include <idzebra/zebramap.h>
+#include <zebramap.h>
#define ZEBRA_MAP_TYPE_SORT 1
#define ZEBRA_MAP_TYPE_INDEX 2
#define ZEBRA_MAP_TYPE_SORT 1
#define ZEBRA_MAP_TYPE_INDEX 2
@@
-40,6
+40,7
@@
struct zebra_map {
int completeness;
int positioned;
int alwaysmatches;
int completeness;
int positioned;
int alwaysmatches;
+ int first_in_field;
int type;
union {
struct {
int type;
union {
struct {
@@
-125,6
+126,7
@@
ZEBRA_RES zebra_maps_read_file(ZebraMaps zms, const char *fname)
(*zm)->completeness = 0;
(*zm)->positioned = 1;
(*zm)->alwaysmatches = 0;
(*zm)->completeness = 0;
(*zm)->positioned = 1;
(*zm)->alwaysmatches = 0;
+ (*zm)->first_in_field = 0;
zms->no_maps++;
}
else if (!yaz_matchstr(argv[0], "sort"))
zms->no_maps++;
}
else if (!yaz_matchstr(argv[0], "sort"))
@@
-142,6
+144,7
@@
ZEBRA_RES zebra_maps_read_file(ZebraMaps zms, const char *fname)
(*zm)->completeness = 0;
(*zm)->positioned = 0;
(*zm)->alwaysmatches = 0;
(*zm)->completeness = 0;
(*zm)->positioned = 0;
(*zm)->alwaysmatches = 0;
+ (*zm)->first_in_field = 0;
zms->no_maps++;
}
else if (!zm)
zms->no_maps++;
}
else if (!zm)
@@
-166,6
+169,10
@@
ZEBRA_RES zebra_maps_read_file(ZebraMaps zms, const char *fname)
{
(*zm)->alwaysmatches = atoi(argv[1]);
}
{
(*zm)->alwaysmatches = atoi(argv[1]);
}
+ else if (!yaz_matchstr(argv[0], "firstinfield") && argc == 2)
+ {
+ (*zm)->first_in_field = atoi(argv[1]);
+ }
else if (!yaz_matchstr(argv[0], "entrysize") && argc == 2)
{
if ((*zm)->type == ZEBRA_MAP_TYPE_SORT)
else if (!yaz_matchstr(argv[0], "entrysize") && argc == 2)
{
if ((*zm)->type == ZEBRA_MAP_TYPE_SORT)
@@
-346,6
+353,14
@@
int zebra_maps_is_alwaysmatches(ZebraMaps zms, unsigned reg_id)
return 0;
}
return 0;
}
+int zebra_maps_is_first_in_field(ZebraMaps zms, unsigned reg_id)
+{
+ struct zebra_map *zm = zebra_map_get(zms, reg_id);
+ if (zm)
+ return zm->first_in_field;
+ return 0;
+}
+
int zebra_maps_sort(ZebraMaps zms, Z_SortAttributes *sortAttributes,
int *numerical)
{
int zebra_maps_sort(ZebraMaps zms, Z_SortAttributes *sortAttributes,
int *numerical)
{