Renamed config.[ch] to pazpar2_config.[ch].
[pazpar2-moved-to-github.git] / src / test_relevance.c
1 /* This file is part of Pazpar2.
2    Copyright (C) 2006-2008 Index Data
3
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
7 version.
8
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
12 for more details.
13
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
17
18 */
19
20 #if HAVE_CONFIG_H
21 #include "cconfig.h"
22 #endif
23
24 #define USE_TIMING 0
25 #if USE_TIMING
26 #include <yaz/timing.h>
27 #endif
28
29 #include <yaz/test.h>
30
31
32 #include "pazpar2_config.h"
33 #include "relevance.h"
34 #include "record.h"
35 #include "reclists.h"
36
37 #if 0
38
39 void test_relevance_7bit(int argc, char **argv)
40 {
41   NMEM  nmem = nmem_create();
42
43   struct conf_service *service = 0; 
44   service =  conf_service_create(nmem, 1, 1);
45
46   conf_service_add_metadata(nmem, service, 0, "title",
47                             Metadata_type_generic, Metadata_merge_unique,
48                             1, 1, 1, 0);
49   
50   conf_service_add_sortkey(nmem, service, 0, "title",
51                            Metadata_sortkey_string);
52
53   //conf_service_add_sortkey(nmem, service, 1, "relevance",
54   //                         Metadata_sortkey_relevance);
55   
56
57
58
59   // setting up records
60   
61   // why on earth do we have a client dangeling from the record ??
62   // record->client = client;
63
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"};
68   
69
70   //union data_types data_year;
71   //data_num.number.min = 2005;
72   //data_num.number.max = 2007;
73
74   int no_recs = 4;
75
76   const char *mk_ape_fish = "ape fish";
77   struct record *rec_ape_fish = 0;
78   rec_ape_fish 
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);  
85
86   const char *mk_bee_fish = "bee fish";
87   struct record *rec_bee_fish = 0;
88   rec_bee_fish 
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);
95  
96   const char *mk_fish_bee = "fish bee";
97   struct record *rec_fish_bee = 0;
98   rec_fish_bee 
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);
105   
106   const char *mk_zebra_bee = "zebra bee";
107   struct record *rec_zebra_bee = 0;
108     rec_zebra_bee 
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);
115
116   
117   struct reclist *list = 0;
118   list = reclist_create(nmem, no_recs);
119   YAZ_CHECK(list);
120
121   int no_merged = 0;
122
123
124   const char * queryterms[] = 
125       {"ape", "fish", 0};
126   //    {"ål", "økologi", "æble", 0};
127
128
129   //struct relevance *rel = 0;
130   //rel = relevance_create(nmem, queryterms, no_recs);
131   //YAZ_CHECK(rel);
132   
133   struct record_cluster *cluster = 0;
134
135
136   // insert records into recordlist and get clusters 
137   // since metadata keys differ, we get multiple clusters ?? 
138   cluster 
139       = reclist_insert(list, service, rec_ape_fish, mk_ape_fish, &no_merged);
140   YAZ_CHECK(cluster);
141   data_types_assign(nmem, &cluster->sortkeys[0], *rec_ape_fish->sortkeys[0]);
142   //relevance_newrec(rel, cluster);
143
144   cluster 
145       = reclist_insert(list, service, rec_bee_fish, mk_bee_fish, &no_merged);
146   YAZ_CHECK(cluster);
147   data_types_assign(nmem, &cluster->sortkeys[0], *rec_bee_fish->sortkeys[0]);
148   //relevance_newrec(rel, cluster);
149
150   cluster 
151       = reclist_insert(list, service, rec_fish_bee, mk_fish_bee, &no_merged);
152   YAZ_CHECK(cluster);
153   data_types_assign(nmem, &cluster->sortkeys[0], *rec_fish_bee->sortkeys[0]);
154   //relevance_newrec(rel, cluster);
155
156   cluster 
157       = reclist_insert(list, service, rec_zebra_bee, mk_zebra_bee, &no_merged);
158   YAZ_CHECK(cluster);
159   data_types_assign(nmem, &cluster->sortkeys[0], *rec_zebra_bee->sortkeys[0]);
160   //relevance_newrec(rel, cluster);
161
162
163   YAZ_CHECK(no_recs == no_merged);
164
165   // now sorting according to sorting criteria, here ascending title
166   struct reclist_sortparms *sort_parms = 0;
167
168   reclist_sortparms_insert(nmem, &sort_parms, service, "title", 1);
169
170   //reclist_sortparms_insert(nmem, &sort_parms, service, "relevance", 1);
171
172   // crashes with a fat segmentation fault! To be traced tomorrow
173   reclist_sort(list, sort_parms);
174   
175
176                         
177   //mergekey_norm = (xmlChar *) nmem_strdup(se->nmem, (char*) mergekey);
178   //normalize_mergekey((char *) mergekey_norm, 0);
179
180
181
182
183
184
185   //relevance_prepare_read(rel, list);
186
187
188   //relevance_donerecord(rel, cluster);
189   // relevance_countwords(se->rel, cluster, 
190   //                                   (char *) value, service->metadata->rank);
191   //      
192
193
194   nmem_destroy(nmem);
195
196   //YAZ_CHECK(0 == 0);
197   //YAZ_CHECK_EQ(0, 1);
198 }
199
200 #endif
201
202 int main(int argc, char **argv)
203 {
204     YAZ_CHECK_INIT(argc, argv); 
205     YAZ_CHECK_LOG(); 
206
207
208     //test_relevance_7bit(argc, argv); 
209
210     
211     YAZ_CHECK_TERM;
212 }
213
214
215
216
217 /*
218  * Local variables:
219  * c-basic-offset: 4
220  * indent-tabs-mode: nil
221  * End:
222  * vim: shiftwidth=4 tabstop=8 expandtab
223  */