X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Ftest_relevance.c;h=bcf89d4689987ed21caf4b20ed2dde9a4480fee6;hb=0ff1a97b2a69905755b9adb24a474d30f1c52150;hp=b3b0f3e43d9340f727526efa9afefff8261481aa;hpb=5bfbd89faa07d7f0cb4db48d2970231a6ce42d47;p=pazpar2-moved-to-github.git diff --git a/src/test_relevance.c b/src/test_relevance.c index b3b0f3e..bcf89d4 100644 --- a/src/test_relevance.c +++ b/src/test_relevance.c @@ -1,4 +1,4 @@ -/* $Id: test_relevance.c,v 1.1 2007-04-16 13:58:20 marc Exp $ +/* $Id: test_relevance.c,v 1.13 2007-05-11 08:41:07 marc Exp $ Copyright (c) 2006-2007, Index Data. This file is part of Pazpar2. @@ -19,17 +19,6 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - #if HAVE_CONFIG_H #include "cconfig.h" #endif @@ -42,56 +31,175 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include -//#include "pazpar2.h" +#include "config.h" #include "relevance.h" +#include "record.h" +#include "reclists.h" +#if 0 +void test_relevance_7bit(int argc, char **argv) +{ + NMEM nmem = nmem_create(); + struct conf_service *service = 0; + service = conf_service_create(nmem, 1, 1); + conf_service_add_metadata(nmem, service, 0, "title", + Metadata_type_generic, Metadata_merge_unique, + 1, 1, 1, 0); + + conf_service_add_sortkey(nmem, service, 0, "title", + Metadata_sortkey_string); + //conf_service_add_sortkey(nmem, service, 1, "relevance", + // Metadata_sortkey_relevance); + -void test_relevance(int argc, char **argv) -{ - NMEM nmem = nmem_create(); - struct conf_service service; - struct record record; - struct reclist list; - struct record_cluster *cluster = 0; - struct relevance *rel = 0; - int numrecs = 10; - char mergekey[128]; - //const char * terms[] = - // {"ål", "abe", "økologi", "fisk", "æble", "yoghurt"}; - const char * terms[] = - {"abe", "fisk"}; - int total = 0; - struct record_metadata *metadata = 0; + // setting up records + + // why on earth do we have a client dangeling from the record ?? + // record->client = client; + + union data_types data_ape = {"ape"}; + union data_types data_bee = {"bee"}; + union data_types data_fish = {"fish"}; + union data_types data_zebra = {"zebra"}; - relevance_create(nmem, terms, numrecs); + //union data_types data_year; + //data_num.number.min = 2005; + //data_num.number.max = 2007; + + int no_recs = 4; + + const char *mk_ape_fish = "ape fish"; + struct record *rec_ape_fish = 0; + rec_ape_fish + = record_create(nmem, service->num_metadata, service->num_sortkeys); + record_add_metadata(nmem, rec_ape_fish, service, "title", data_ape); + //record_assign_sortkey(nmem, rec_ape_fish, service, "relevance", data_ape); + record_assign_sortkey(nmem, rec_ape_fish, service, "title", data_ape); + record_add_metadata(nmem, rec_ape_fish, service, "title", data_fish); + YAZ_CHECK(rec_ape_fish); + + const char *mk_bee_fish = "bee fish"; + struct record *rec_bee_fish = 0; + rec_bee_fish + = record_create(nmem, service->num_metadata, service->num_sortkeys); + record_add_metadata(nmem, rec_bee_fish, service, "title", data_bee); + //record_assign_sortkey(nmem, rec_bee_fish, service, "relevance", data_bee); + record_assign_sortkey(nmem, rec_bee_fish, service, "title", data_bee); + record_add_metadata(nmem, rec_bee_fish, service, "title", data_fish); + YAZ_CHECK(rec_bee_fish); + + const char *mk_fish_bee = "fish bee"; + struct record *rec_fish_bee = 0; + rec_fish_bee + = record_create(nmem, service->num_metadata, service->num_sortkeys); + record_add_metadata(nmem, rec_fish_bee, service, "title", data_fish); + //record_assign_sortkey(nmem, rec_fish_bee, service, "relevance", data_fish); + record_assign_sortkey(nmem, rec_fish_bee, service, "title", data_fish); + record_add_metadata(nmem, rec_fish_bee, service, "title", data_bee); + YAZ_CHECK(rec_fish_bee); + + const char *mk_zebra_bee = "zebra bee"; + struct record *rec_zebra_bee = 0; + rec_zebra_bee + = record_create(nmem, service->num_metadata, service->num_sortkeys); + record_add_metadata(nmem, rec_zebra_bee, service, "title", data_zebra); + //record_assign_sortkey(nmem, rec_zebra_bee, service, "relevance", data_zebra); + record_assign_sortkey(nmem, rec_zebra_bee, service, "title", data_zebra); + record_add_metadata(nmem, rec_zebra_bee, service, "title", data_bee); + YAZ_CHECK(rec_zebra_bee); - relevance_prepare_read(rel, &list); + + struct reclist *list = 0; + list = reclist_create(nmem, no_recs); + YAZ_CHECK(list); - cluster = reclist_insert(&service, &list, &record, mergekey, &total); + int no_merged = 0; + + const char * queryterms[] = + {"ape", "fish", 0}; + // {"ål", "økologi", "æble", 0}; + + + //struct relevance *rel = 0; + //rel = relevance_create(nmem, queryterms, no_recs); + //YAZ_CHECK(rel); + + struct record_cluster *cluster = 0; + + + // insert records into recordlist and get clusters + // since metadata keys differ, we get multiple clusters ?? + cluster + = reclist_insert(list, service, rec_ape_fish, mk_ape_fish, &no_merged); + YAZ_CHECK(cluster); + data_types_assign(nmem, &cluster->sortkeys[0], *rec_ape_fish->sortkeys[0]); //relevance_newrec(rel, cluster); - //relevance_donerecord(se->relevance, cluster); - // relevance_countwords(se->relevance, cluster, - // (char *) value, md->rank); - // + cluster + = reclist_insert(list, service, rec_bee_fish, mk_bee_fish, &no_merged); + YAZ_CHECK(cluster); + data_types_assign(nmem, &cluster->sortkeys[0], *rec_bee_fish->sortkeys[0]); + //relevance_newrec(rel, cluster); - nmem_destroy(nmem); + cluster + = reclist_insert(list, service, rec_fish_bee, mk_fish_bee, &no_merged); + YAZ_CHECK(cluster); + data_types_assign(nmem, &cluster->sortkeys[0], *rec_fish_bee->sortkeys[0]); + //relevance_newrec(rel, cluster); - YAZ_CHECK(0 == 0); - //YAZ_CHECK_EQ(0, 1); + cluster + = reclist_insert(list, service, rec_zebra_bee, mk_zebra_bee, &no_merged); + YAZ_CHECK(cluster); + data_types_assign(nmem, &cluster->sortkeys[0], *rec_zebra_bee->sortkeys[0]); + //relevance_newrec(rel, cluster); + + + YAZ_CHECK(no_recs == no_merged); + + // now sorting according to sorting criteria, here ascending title + struct reclist_sortparms *sort_parms = 0; + + reclist_sortparms_insert(nmem, &sort_parms, service, "title", 1); + //reclist_sortparms_insert(nmem, &sort_parms, service, "relevance", 1); + + // crashes with a fat segmentation fault! To be traced tomorrow + reclist_sort(list, sort_parms); + + //mergekey_norm = (xmlChar *) nmem_strdup(se->nmem, (char*) mergekey); + //normalize_mergekey((char *) mergekey_norm, 0); + + + + + + + //relevance_prepare_read(rel, list); + + + //relevance_donerecord(rel, cluster); + // relevance_countwords(se->rel, cluster, + // (char *) value, service->metadata->rank); + // + + + nmem_destroy(nmem); + + //YAZ_CHECK(0 == 0); + //YAZ_CHECK_EQ(0, 1); } +#endif int main(int argc, char **argv) { @@ -99,7 +207,7 @@ int main(int argc, char **argv) YAZ_CHECK_LOG(); - test_relevance(argc, argv); + //test_relevance_7bit(argc, argv); YAZ_CHECK_TERM;