1 /* This file is part of Pazpar2.
2 Copyright (C) 2006-2008 Index Data
4 Pazpar2 is free software; you can redistribute it and/or modify it under
5 the terms of the GNU General Public License as published by the Free
6 Software Foundation; either version 2, or (at your option) any later
9 Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26 #include <yaz/timing.h>
32 #include "pazpar2_config.h"
33 #include "relevance.h"
39 void test_relevance_7bit(int argc, char **argv)
41 NMEM nmem = nmem_create();
43 struct conf_service *service = 0;
44 service = conf_service_create(nmem, 1, 1);
46 conf_service_add_metadata(nmem, service, 0, "title",
47 Metadata_type_generic, Metadata_merge_unique,
50 conf_service_add_sortkey(nmem, service, 0, "title",
51 Metadata_sortkey_string);
53 //conf_service_add_sortkey(nmem, service, 1, "relevance",
54 // Metadata_sortkey_relevance);
61 // why on earth do we have a client dangeling from the record ??
62 // record->client = client;
64 union data_types data_ape = {"ape"};
65 union data_types data_bee = {"bee"};
66 union data_types data_fish = {"fish"};
67 union data_types data_zebra = {"zebra"};
70 //union data_types data_year;
71 //data_num.number.min = 2005;
72 //data_num.number.max = 2007;
76 const char *mk_ape_fish = "ape fish";
77 struct record *rec_ape_fish = 0;
79 = record_create(nmem, service->num_metadata, service->num_sortkeys);
80 record_add_metadata(nmem, rec_ape_fish, service, "title", data_ape);
81 //record_assign_sortkey(nmem, rec_ape_fish, service, "relevance", data_ape);
82 record_assign_sortkey(nmem, rec_ape_fish, service, "title", data_ape);
83 record_add_metadata(nmem, rec_ape_fish, service, "title", data_fish);
84 YAZ_CHECK(rec_ape_fish);
86 const char *mk_bee_fish = "bee fish";
87 struct record *rec_bee_fish = 0;
89 = record_create(nmem, service->num_metadata, service->num_sortkeys);
90 record_add_metadata(nmem, rec_bee_fish, service, "title", data_bee);
91 //record_assign_sortkey(nmem, rec_bee_fish, service, "relevance", data_bee);
92 record_assign_sortkey(nmem, rec_bee_fish, service, "title", data_bee);
93 record_add_metadata(nmem, rec_bee_fish, service, "title", data_fish);
94 YAZ_CHECK(rec_bee_fish);
96 const char *mk_fish_bee = "fish bee";
97 struct record *rec_fish_bee = 0;
99 = record_create(nmem, service->num_metadata, service->num_sortkeys);
100 record_add_metadata(nmem, rec_fish_bee, service, "title", data_fish);
101 //record_assign_sortkey(nmem, rec_fish_bee, service, "relevance", data_fish);
102 record_assign_sortkey(nmem, rec_fish_bee, service, "title", data_fish);
103 record_add_metadata(nmem, rec_fish_bee, service, "title", data_bee);
104 YAZ_CHECK(rec_fish_bee);
106 const char *mk_zebra_bee = "zebra bee";
107 struct record *rec_zebra_bee = 0;
109 = record_create(nmem, service->num_metadata, service->num_sortkeys);
110 record_add_metadata(nmem, rec_zebra_bee, service, "title", data_zebra);
111 //record_assign_sortkey(nmem, rec_zebra_bee, service, "relevance", data_zebra);
112 record_assign_sortkey(nmem, rec_zebra_bee, service, "title", data_zebra);
113 record_add_metadata(nmem, rec_zebra_bee, service, "title", data_bee);
114 YAZ_CHECK(rec_zebra_bee);
117 struct reclist *list = 0;
118 list = reclist_create(nmem, no_recs);
124 const char * queryterms[] =
126 // {"ål", "økologi", "æble", 0};
129 //struct relevance *rel = 0;
130 //rel = relevance_create(nmem, queryterms, no_recs);
133 struct record_cluster *cluster = 0;
136 // insert records into recordlist and get clusters
137 // since metadata keys differ, we get multiple clusters ??
139 = reclist_insert(list, service, rec_ape_fish, mk_ape_fish, &no_merged);
141 data_types_assign(nmem, &cluster->sortkeys[0], *rec_ape_fish->sortkeys[0]);
142 //relevance_newrec(rel, cluster);
145 = reclist_insert(list, service, rec_bee_fish, mk_bee_fish, &no_merged);
147 data_types_assign(nmem, &cluster->sortkeys[0], *rec_bee_fish->sortkeys[0]);
148 //relevance_newrec(rel, cluster);
151 = reclist_insert(list, service, rec_fish_bee, mk_fish_bee, &no_merged);
153 data_types_assign(nmem, &cluster->sortkeys[0], *rec_fish_bee->sortkeys[0]);
154 //relevance_newrec(rel, cluster);
157 = reclist_insert(list, service, rec_zebra_bee, mk_zebra_bee, &no_merged);
159 data_types_assign(nmem, &cluster->sortkeys[0], *rec_zebra_bee->sortkeys[0]);
160 //relevance_newrec(rel, cluster);
163 YAZ_CHECK(no_recs == no_merged);
165 // now sorting according to sorting criteria, here ascending title
166 struct reclist_sortparms *sort_parms = 0;
168 reclist_sortparms_insert(nmem, &sort_parms, service, "title", 1);
170 //reclist_sortparms_insert(nmem, &sort_parms, service, "relevance", 1);
172 // crashes with a fat segmentation fault! To be traced tomorrow
173 reclist_sort(list, sort_parms);
177 //mergekey_norm = (xmlChar *) nmem_strdup(se->nmem, (char*) mergekey);
178 //normalize_mergekey((char *) mergekey_norm, 0);
185 //relevance_prepare_read(rel, list);
188 //relevance_donerecord(rel, cluster);
189 // relevance_countwords(se->rel, cluster,
190 // (char *) value, service->metadata->rank);
197 //YAZ_CHECK_EQ(0, 1);
202 int main(int argc, char **argv)
204 YAZ_CHECK_INIT(argc, argv);
208 //test_relevance_7bit(argc, argv);
220 * indent-tabs-mode: nil
222 * vim: shiftwidth=4 tabstop=8 expandtab