1 /* $Id: test_relevance.c,v 1.12 2007-04-26 21:31:05 marc Exp $
2 Copyright (c) 2006-2007, Index Data.
4 This file is part of Pazpar2.
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
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
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
28 #include <yaz/timing.h>
35 #include "relevance.h"
40 void test_relevance_7bit(int argc, char **argv)
42 NMEM nmem = nmem_create();
44 struct conf_service *service = 0;
45 service = conf_service_create(nmem, 1, 1);
47 conf_service_add_metadata(nmem, service, 0, "title",
48 Metadata_type_generic, Metadata_merge_unique,
51 conf_service_add_sortkey(nmem, service, 0, "title",
52 Metadata_sortkey_string);
54 //conf_service_add_sortkey(nmem, service, 1, "relevance",
55 // Metadata_sortkey_relevance);
62 // why on earth do we have a client dangeling from the record ??
63 // record->client = client;
65 union data_types data_ape = {"ape"};
66 union data_types data_bee = {"bee"};
67 union data_types data_fish = {"fish"};
68 union data_types data_zebra = {"zebra"};
71 //union data_types data_year;
72 //data_num.number.min = 2005;
73 //data_num.number.max = 2007;
77 const char *mk_ape_fish = "ape fish";
78 struct record *rec_ape_fish = 0;
80 = record_create(nmem, service->num_metadata, service->num_sortkeys);
81 record_add_metadata(nmem, rec_ape_fish, service, "title", data_ape);
82 //record_assign_sortkey(nmem, rec_ape_fish, service, "relevance", data_ape);
83 record_assign_sortkey(nmem, rec_ape_fish, service, "title", data_ape);
84 record_add_metadata(nmem, rec_ape_fish, service, "title", data_fish);
85 YAZ_CHECK(rec_ape_fish);
87 const char *mk_bee_fish = "bee fish";
88 struct record *rec_bee_fish = 0;
90 = record_create(nmem, service->num_metadata, service->num_sortkeys);
91 record_add_metadata(nmem, rec_bee_fish, service, "title", data_bee);
92 //record_assign_sortkey(nmem, rec_bee_fish, service, "relevance", data_bee);
93 record_assign_sortkey(nmem, rec_bee_fish, service, "title", data_bee);
94 record_add_metadata(nmem, rec_bee_fish, service, "title", data_fish);
95 YAZ_CHECK(rec_bee_fish);
97 const char *mk_fish_bee = "fish bee";
98 struct record *rec_fish_bee = 0;
100 = record_create(nmem, service->num_metadata, service->num_sortkeys);
101 record_add_metadata(nmem, rec_fish_bee, service, "title", data_fish);
102 //record_assign_sortkey(nmem, rec_fish_bee, service, "relevance", data_fish);
103 record_assign_sortkey(nmem, rec_fish_bee, service, "title", data_fish);
104 record_add_metadata(nmem, rec_fish_bee, service, "title", data_bee);
105 YAZ_CHECK(rec_fish_bee);
107 const char *mk_zebra_bee = "zebra bee";
108 struct record *rec_zebra_bee = 0;
110 = record_create(nmem, service->num_metadata, service->num_sortkeys);
111 record_add_metadata(nmem, rec_zebra_bee, service, "title", data_zebra);
112 //record_assign_sortkey(nmem, rec_zebra_bee, service, "relevance", data_zebra);
113 record_assign_sortkey(nmem, rec_zebra_bee, service, "title", data_zebra);
114 record_add_metadata(nmem, rec_zebra_bee, service, "title", data_bee);
115 YAZ_CHECK(rec_zebra_bee);
118 struct reclist *list = 0;
119 list = reclist_create(nmem, no_recs);
125 const char * queryterms[] =
127 // {"ål", "økologi", "æble", 0};
130 //struct relevance *rel = 0;
131 //rel = relevance_create(nmem, queryterms, no_recs);
134 struct record_cluster *cluster = 0;
137 // insert records into recordlist and get clusters
138 // since metadata keys differ, we get multiple clusters ??
140 = reclist_insert(list, service, rec_ape_fish, mk_ape_fish, &no_merged);
142 data_types_assign(nmem, &cluster->sortkeys[0], *rec_ape_fish->sortkeys[0]);
143 //relevance_newrec(rel, cluster);
146 = reclist_insert(list, service, rec_bee_fish, mk_bee_fish, &no_merged);
148 data_types_assign(nmem, &cluster->sortkeys[0], *rec_bee_fish->sortkeys[0]);
149 //relevance_newrec(rel, cluster);
152 = reclist_insert(list, service, rec_fish_bee, mk_fish_bee, &no_merged);
154 data_types_assign(nmem, &cluster->sortkeys[0], *rec_fish_bee->sortkeys[0]);
155 //relevance_newrec(rel, cluster);
158 = reclist_insert(list, service, rec_zebra_bee, mk_zebra_bee, &no_merged);
160 data_types_assign(nmem, &cluster->sortkeys[0], *rec_zebra_bee->sortkeys[0]);
161 //relevance_newrec(rel, cluster);
164 YAZ_CHECK(no_recs == no_merged);
166 // now sorting according to sorting criteria, here ascending title
167 struct reclist_sortparms *sort_parms = 0;
168 reclist_sortparms_insert(nmem, &sort_parms, service, "title", 1);
169 //reclist_sortparms_insert(nmem, &sort_parms, service, "relevance", 1);
171 // crashes with a fat segmentation fault! To be traced tomorrow
172 reclist_sort(list, sort_parms);
176 //mergekey_norm = (xmlChar *) nmem_strdup(se->nmem, (char*) mergekey);
177 //normalize_mergekey((char *) mergekey_norm, 0);
184 //relevance_prepare_read(rel, list);
187 //relevance_donerecord(rel, cluster);
188 // relevance_countwords(se->rel, cluster,
189 // (char *) value, service->metadata->rank);
196 //YAZ_CHECK_EQ(0, 1);
200 int main(int argc, char **argv)
202 YAZ_CHECK_INIT(argc, argv);
206 test_relevance_7bit(argc, argv);
218 * indent-tabs-mode: nil
220 * vim: shiftwidth=4 tabstop=8 expandtab