1 /* $Id: test_relevance.c,v 1.13 2007-05-11 08:41:07 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"
41 void test_relevance_7bit(int argc, char **argv)
43 NMEM nmem = nmem_create();
45 struct conf_service *service = 0;
46 service = conf_service_create(nmem, 1, 1);
48 conf_service_add_metadata(nmem, service, 0, "title",
49 Metadata_type_generic, Metadata_merge_unique,
52 conf_service_add_sortkey(nmem, service, 0, "title",
53 Metadata_sortkey_string);
55 //conf_service_add_sortkey(nmem, service, 1, "relevance",
56 // Metadata_sortkey_relevance);
63 // why on earth do we have a client dangeling from the record ??
64 // record->client = client;
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"};
72 //union data_types data_year;
73 //data_num.number.min = 2005;
74 //data_num.number.max = 2007;
78 const char *mk_ape_fish = "ape fish";
79 struct record *rec_ape_fish = 0;
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);
88 const char *mk_bee_fish = "bee fish";
89 struct record *rec_bee_fish = 0;
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);
98 const char *mk_fish_bee = "fish bee";
99 struct record *rec_fish_bee = 0;
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);
108 const char *mk_zebra_bee = "zebra bee";
109 struct record *rec_zebra_bee = 0;
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);
119 struct reclist *list = 0;
120 list = reclist_create(nmem, no_recs);
126 const char * queryterms[] =
128 // {"ål", "økologi", "æble", 0};
131 //struct relevance *rel = 0;
132 //rel = relevance_create(nmem, queryterms, no_recs);
135 struct record_cluster *cluster = 0;
138 // insert records into recordlist and get clusters
139 // since metadata keys differ, we get multiple clusters ??
141 = reclist_insert(list, service, rec_ape_fish, mk_ape_fish, &no_merged);
143 data_types_assign(nmem, &cluster->sortkeys[0], *rec_ape_fish->sortkeys[0]);
144 //relevance_newrec(rel, cluster);
147 = reclist_insert(list, service, rec_bee_fish, mk_bee_fish, &no_merged);
149 data_types_assign(nmem, &cluster->sortkeys[0], *rec_bee_fish->sortkeys[0]);
150 //relevance_newrec(rel, cluster);
153 = reclist_insert(list, service, rec_fish_bee, mk_fish_bee, &no_merged);
155 data_types_assign(nmem, &cluster->sortkeys[0], *rec_fish_bee->sortkeys[0]);
156 //relevance_newrec(rel, cluster);
159 = reclist_insert(list, service, rec_zebra_bee, mk_zebra_bee, &no_merged);
161 data_types_assign(nmem, &cluster->sortkeys[0], *rec_zebra_bee->sortkeys[0]);
162 //relevance_newrec(rel, cluster);
165 YAZ_CHECK(no_recs == no_merged);
167 // now sorting according to sorting criteria, here ascending title
168 struct reclist_sortparms *sort_parms = 0;
170 reclist_sortparms_insert(nmem, &sort_parms, service, "title", 1);
172 //reclist_sortparms_insert(nmem, &sort_parms, service, "relevance", 1);
174 // crashes with a fat segmentation fault! To be traced tomorrow
175 reclist_sort(list, sort_parms);
179 //mergekey_norm = (xmlChar *) nmem_strdup(se->nmem, (char*) mergekey);
180 //normalize_mergekey((char *) mergekey_norm, 0);
187 //relevance_prepare_read(rel, list);
190 //relevance_donerecord(rel, cluster);
191 // relevance_countwords(se->rel, cluster,
192 // (char *) value, service->metadata->rank);
199 //YAZ_CHECK_EQ(0, 1);
204 int main(int argc, char **argv)
206 YAZ_CHECK_INIT(argc, argv);
210 //test_relevance_7bit(argc, argv);
222 * indent-tabs-mode: nil
224 * vim: shiftwidth=4 tabstop=8 expandtab