bcf89d4689987ed21caf4b20ed2dde9a4480fee6
[pazpar2-moved-to-github.git] / src / test_relevance.c
1 /* $Id: test_relevance.c,v 1.13 2007-05-11 08:41:07 marc Exp $
2    Copyright (c) 2006-2007, Index Data.
3
4 This file is part of Pazpar2.
5
6 Pazpar2 is free software; you can redistribute it and/or modify it under
7 the terms of the GNU General Public License as published by the Free
8 Software Foundation; either version 2, or (at your option) any later
9 version.
10
11 Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with Pazpar2; see the file LICENSE.  If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19 02111-1307, USA.
20  */
21
22 #if HAVE_CONFIG_H
23 #include "cconfig.h"
24 #endif
25
26 #define USE_TIMING 0
27 #if USE_TIMING
28 #include <yaz/timing.h>
29 #endif
30
31 #include <yaz/test.h>
32
33
34 #include "config.h"
35 #include "relevance.h"
36 #include "record.h"
37 #include "reclists.h"
38
39 #if 0
40
41 void test_relevance_7bit(int argc, char **argv)
42 {
43   NMEM  nmem = nmem_create();
44
45   struct conf_service *service = 0; 
46   service =  conf_service_create(nmem, 1, 1);
47
48   conf_service_add_metadata(nmem, service, 0, "title",
49                             Metadata_type_generic, Metadata_merge_unique,
50                             1, 1, 1, 0);
51   
52   conf_service_add_sortkey(nmem, service, 0, "title",
53                            Metadata_sortkey_string);
54
55   //conf_service_add_sortkey(nmem, service, 1, "relevance",
56   //                         Metadata_sortkey_relevance);
57   
58
59
60
61   // setting up records
62   
63   // why on earth do we have a client dangeling from the record ??
64   // record->client = client;
65
66   union data_types data_ape = {"ape"};
67   union data_types data_bee = {"bee"};
68   union data_types data_fish = {"fish"};
69   union data_types data_zebra = {"zebra"};
70   
71
72   //union data_types data_year;
73   //data_num.number.min = 2005;
74   //data_num.number.max = 2007;
75
76   int no_recs = 4;
77
78   const char *mk_ape_fish = "ape fish";
79   struct record *rec_ape_fish = 0;
80   rec_ape_fish 
81       = record_create(nmem, service->num_metadata, service->num_sortkeys);
82   record_add_metadata(nmem, rec_ape_fish, service, "title", data_ape);
83   //record_assign_sortkey(nmem, rec_ape_fish, service, "relevance", data_ape);
84   record_assign_sortkey(nmem, rec_ape_fish, service, "title", data_ape);
85   record_add_metadata(nmem, rec_ape_fish, service, "title", data_fish);
86   YAZ_CHECK(rec_ape_fish);  
87
88   const char *mk_bee_fish = "bee fish";
89   struct record *rec_bee_fish = 0;
90   rec_bee_fish 
91       = record_create(nmem, service->num_metadata, service->num_sortkeys);
92   record_add_metadata(nmem, rec_bee_fish, service, "title", data_bee);
93   //record_assign_sortkey(nmem, rec_bee_fish, service, "relevance", data_bee);
94   record_assign_sortkey(nmem, rec_bee_fish, service, "title", data_bee);
95   record_add_metadata(nmem, rec_bee_fish, service, "title", data_fish);
96   YAZ_CHECK(rec_bee_fish);
97  
98   const char *mk_fish_bee = "fish bee";
99   struct record *rec_fish_bee = 0;
100   rec_fish_bee 
101       = record_create(nmem, service->num_metadata, service->num_sortkeys);
102   record_add_metadata(nmem, rec_fish_bee, service, "title", data_fish);
103   //record_assign_sortkey(nmem, rec_fish_bee, service, "relevance", data_fish);
104   record_assign_sortkey(nmem, rec_fish_bee, service, "title", data_fish);
105   record_add_metadata(nmem, rec_fish_bee, service, "title", data_bee);
106   YAZ_CHECK(rec_fish_bee);
107   
108   const char *mk_zebra_bee = "zebra bee";
109   struct record *rec_zebra_bee = 0;
110     rec_zebra_bee 
111       = record_create(nmem, service->num_metadata, service->num_sortkeys);
112   record_add_metadata(nmem, rec_zebra_bee, service, "title", data_zebra);
113   //record_assign_sortkey(nmem, rec_zebra_bee, service, "relevance", data_zebra);
114   record_assign_sortkey(nmem, rec_zebra_bee, service, "title", data_zebra);
115   record_add_metadata(nmem, rec_zebra_bee, service, "title", data_bee);
116   YAZ_CHECK(rec_zebra_bee);
117
118   
119   struct reclist *list = 0;
120   list = reclist_create(nmem, no_recs);
121   YAZ_CHECK(list);
122
123   int no_merged = 0;
124
125
126   const char * queryterms[] = 
127       {"ape", "fish", 0};
128   //    {"ål", "økologi", "æble", 0};
129
130
131   //struct relevance *rel = 0;
132   //rel = relevance_create(nmem, queryterms, no_recs);
133   //YAZ_CHECK(rel);
134   
135   struct record_cluster *cluster = 0;
136
137
138   // insert records into recordlist and get clusters 
139   // since metadata keys differ, we get multiple clusters ?? 
140   cluster 
141       = reclist_insert(list, service, rec_ape_fish, mk_ape_fish, &no_merged);
142   YAZ_CHECK(cluster);
143   data_types_assign(nmem, &cluster->sortkeys[0], *rec_ape_fish->sortkeys[0]);
144   //relevance_newrec(rel, cluster);
145
146   cluster 
147       = reclist_insert(list, service, rec_bee_fish, mk_bee_fish, &no_merged);
148   YAZ_CHECK(cluster);
149   data_types_assign(nmem, &cluster->sortkeys[0], *rec_bee_fish->sortkeys[0]);
150   //relevance_newrec(rel, cluster);
151
152   cluster 
153       = reclist_insert(list, service, rec_fish_bee, mk_fish_bee, &no_merged);
154   YAZ_CHECK(cluster);
155   data_types_assign(nmem, &cluster->sortkeys[0], *rec_fish_bee->sortkeys[0]);
156   //relevance_newrec(rel, cluster);
157
158   cluster 
159       = reclist_insert(list, service, rec_zebra_bee, mk_zebra_bee, &no_merged);
160   YAZ_CHECK(cluster);
161   data_types_assign(nmem, &cluster->sortkeys[0], *rec_zebra_bee->sortkeys[0]);
162   //relevance_newrec(rel, cluster);
163
164
165   YAZ_CHECK(no_recs == no_merged);
166
167   // now sorting according to sorting criteria, here ascending title
168   struct reclist_sortparms *sort_parms = 0;
169
170   reclist_sortparms_insert(nmem, &sort_parms, service, "title", 1);
171
172   //reclist_sortparms_insert(nmem, &sort_parms, service, "relevance", 1);
173
174   // crashes with a fat segmentation fault! To be traced tomorrow
175   reclist_sort(list, sort_parms);
176   
177
178                         
179   //mergekey_norm = (xmlChar *) nmem_strdup(se->nmem, (char*) mergekey);
180   //normalize_mergekey((char *) mergekey_norm, 0);
181
182
183
184
185
186
187   //relevance_prepare_read(rel, list);
188
189
190   //relevance_donerecord(rel, cluster);
191   // relevance_countwords(se->rel, cluster, 
192   //                                   (char *) value, service->metadata->rank);
193   //      
194
195
196   nmem_destroy(nmem);
197
198   //YAZ_CHECK(0 == 0);
199   //YAZ_CHECK_EQ(0, 1);
200 }
201
202 #endif
203
204 int main(int argc, char **argv)
205 {
206     YAZ_CHECK_INIT(argc, argv); 
207     YAZ_CHECK_LOG(); 
208
209
210     //test_relevance_7bit(argc, argv); 
211
212     
213     YAZ_CHECK_TERM;
214 }
215
216
217
218
219 /*
220  * Local variables:
221  * c-basic-offset: 4
222  * indent-tabs-mode: nil
223  * End:
224  * vim: shiftwidth=4 tabstop=8 expandtab
225  */