From: Heikki Levanto Date: Tue, 17 Dec 2013 09:34:27 +0000 (+0100) Subject: Towards normalized rankings (PAZ-909) X-Git-Tag: v1.6.38~15 X-Git-Url: http://git.indexdata.com/?p=pazpar2-moved-to-github.git;a=commitdiff_plain;h=fb1ba03adf3d800d2b40e7f0d6ea367e6c520356 Towards normalized rankings (PAZ-909) Can extract native ranks, and normalize them (also normalizes our TF/IDF and position-based pseudorankings to the same level). Does not yet merge individual record ranks into cluster ranks. Default behavior should be the same as before. --- diff --git a/src/relevance.c b/src/relevance.c index 74f0e15..9de591f 100644 --- a/src/relevance.c +++ b/src/relevance.c @@ -27,6 +27,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "relevance.h" #include "session.h" +#include "client.h" +#include "settings.h" #ifdef WIN32 #define log2(x) (log(x)/log(2)) @@ -45,6 +47,7 @@ struct relevance double lead_decay; int length_divide; NMEM nmem; + struct norm_client *norm; }; struct word_entry { @@ -55,6 +58,222 @@ struct word_entry { struct word_entry *next; }; +// Structure to keep data for norm_client scores from one client +struct norm_client +{ + int num; // number of the client + float max; + float min; + int count; + const char *native_score; + int scorefield; + float a,b; // Rn = a*R + b + struct client *client; + struct norm_client *next; + struct norm_record *records; +}; + +const int scorefield_none = -1; // Do not normalize anything, use tf/idf as is + // This is the old behavior, and the default +const int scorefield_internal = -2; // use our tf/idf, but normalize it +const int scorefield_position = -3; // fake a score based on the position + +// A structure for each (sub)record. There is one list for each client +struct norm_record +{ + struct record *record; + float score; + struct record_cluster *clust; + struct norm_record *next; +}; + +// Find the norm_client entry for this client, or create one if not there +struct norm_client *findnorm( struct relevance *rel, struct client* client) +{ + struct norm_client *n = rel->norm; + struct session_database *sdb; + while (n) { + if (n->client == client ) + return n; + n = n->next; + } + n = nmem_malloc(rel->nmem, sizeof(struct norm_client) ); + if ( rel->norm ) + n->num = rel->norm->num +1; + else + n->num = 1; + n->count = 0; + n->max = 0.0; + n->min = 0.0; + n->client = client; + n->next = rel->norm; + rel->norm = n; + sdb = client_get_database(client); + n->native_score = session_setting_oneval(sdb, PZ_NATIVE_SCORE); + n->records = 0; + n->scorefield = scorefield_none; + yaz_log(YLOG_LOG,"Normalizing: Client %d uses '%s'", n->num, n->native_score ); + if ( ! n->native_score || ! *n->native_score ) // not specified + n->scorefield = scorefield_none; + else if ( strcmp(n->native_score,"position") == 0 ) + n->scorefield = scorefield_position; + else if ( strcmp(n->native_score,"internal") == 0 ) + n->scorefield = scorefield_internal; + else + { // Get the field index for the score + struct session *se = client_get_session(client); + n->scorefield = conf_service_metadata_field_id(se->service, n->native_score); + } + yaz_log(YLOG_LOG,"Normalizing: Client %d uses '%s' = %d", + n->num, n->native_score, n->scorefield ); + return n; +} + + +// Add a record in the list for that client, for normalizing later +static void setup_norm_record( struct relevance *rel, struct record_cluster *clust) +{ + struct record *record; + for (record = clust->records; record; record = record->next) + { + struct norm_client *norm = findnorm(rel, record->client); + struct norm_record *rp; + if ( norm->scorefield == scorefield_none) + break; // not interested in normalizing this client + rp = nmem_malloc(rel->nmem, sizeof(struct norm_record) ); + norm->count ++; + rp->next = norm->records; + norm->records = rp; + rp->clust = clust; + rp->record = record; + if ( norm->scorefield == scorefield_position ) + rp->score = 1.0 / record->position; + else if ( norm->scorefield == scorefield_internal ) + rp->score = clust->relevance_score; // the tf/idf for the whole cluster + // TODO - Get them for each record, merge later! + else + { + struct record_metadata *md = record->metadata[norm->scorefield]; + rp->score = md->data.fnumber; + assert(rp->score>0); // ### + } + yaz_log(YLOG_LOG,"Got score for %d/%d : %f ", + norm->num, record->position, rp->score ); + if ( norm->count == 1 ) + { + norm->max = rp->score; + norm->min = rp->score; + } else { + if ( rp->score > norm->max ) + norm->max = rp->score; + if ( rp->score < norm->min && abs(rp->score) < 1e-6 ) + norm->min = rp->score; // skip zeroes + } + } +} + +// Calculate the squared sum of residuals, that is the difference from +// normalized values to the target curve, which is 1/n +static double squaresum( struct norm_record *rp, double a, double b) +{ + double sum = 0.0; + for ( ; rp; rp = rp->next ) + { + double target = 1.0 / rp->record->position; + double normscore = rp->score * a + b; + double diff = target - normscore; + sum += diff * diff; + } + return sum; +} + +static void normalize_scores(struct relevance *rel) +{ + // For each client, normalize scores + struct norm_client *norm; + for ( norm = rel->norm; norm; norm = norm->next ) + { + yaz_log(YLOG_LOG,"Normalizing client %d: scorefield=%d count=%d", + norm->num, norm->scorefield, norm->count); + norm->a = 1.0; // default normalizing factors, no change + norm->b = 0.0; + if ( norm->scorefield != scorefield_none && + norm->scorefield != scorefield_position ) + { // have something to normalize + double range = norm->max - norm->min; + int it = 0; + double a,b; // params to optimize + double as,bs; // step sizes + double chi; + // initial guesses for the parameters + if ( range < 1e-6 ) // practically zero + range = norm->max; + a = 1.0 / range; + b = abs(norm->min); + as = a / 3; + bs = b / 3; + chi = squaresum( norm->records, a,b); + while (it++ < 100) // safeguard against things not converging + { + // optimize a + double plus = squaresum(norm->records, a+as, b); + double minus= squaresum(norm->records, a-as, b); + if ( plus < chi && plus < minus ) + { + a = a + as; + chi = plus; + } + else if ( minus < chi && minus < plus ) + { + a = a - as; + chi = minus; + } + else + as = as / 2; + // optimize b + plus = squaresum(norm->records, a, b+bs); + minus= squaresum(norm->records, a, b-bs); + if ( plus < chi && plus < minus ) + { + b = b + bs; + chi = plus; + } + else if ( minus < chi && minus < plus ) + { + b = b - bs; + chi = minus; + } + else + bs = bs / 2; + yaz_log(YLOG_LOG,"Fitting it=%d: a=%f / %f b=%f / %f chi = %f", + it, a, as, b, bs, chi ); + norm->a = a; + norm->b = b; + if ( abs(as) * 1000.0 < abs(a) && + abs(bs) * 1000.0 < abs(b) ) + break; // not changing much any more + } + } + + if ( norm->scorefield != scorefield_none ) + { // distribute the normalized scores to the records + struct norm_record *nr = norm->records; + for ( ; nr ; nr = nr->next ) { + double r = nr->score; + r = norm->a * r + norm -> b; + nr->clust->relevance_score = 10000 * r; + yaz_log(YLOG_LOG,"Normalized %f * %f + %f = %f", + nr->score, norm->a, norm->b, r ); + // TODO - This keeps overwriting the cluster score in random order! + // Need to merge results better + } + + } + + } // client loop +} + + static struct word_entry *word_entry_match(struct relevance *r, const char *norm_str, const char *rank, int *weight) @@ -290,6 +509,7 @@ struct relevance *relevance_create_ccl(pp2_charset_fact_t pft, res->follow_factor = follow_factor; res->lead_decay = lead_decay; res->length_divide = length_divide; + res->norm = 0; res->prt = pp2_charset_token_create(pft, "relevance"); pull_terms(res, query); @@ -360,6 +580,8 @@ void relevance_donerecord(struct relevance *r, struct record_cluster *cluster) r->doc_frequency_vec[0]++; } + + // Prepare for a relevance-sorted read void relevance_prepare_read(struct relevance *rel, struct reclist *reclist) { @@ -367,6 +589,7 @@ void relevance_prepare_read(struct relevance *rel, struct reclist *reclist) float *idfvec = xmalloc(rel->vec_len * sizeof(float)); reclist_enter(reclist); + // Calculate document frequency vector for each term. for (i = 1; i < rel->vec_len; i++) { @@ -422,9 +645,21 @@ void relevance_prepare_read(struct relevance *rel, struct reclist *reclist) wrbuf_printf(w, "score = relevance(%d);\n", relevance); } rec->relevance_score = relevance; - } + + // Build the normalizing structures + // List of (sub)records for each target + setup_norm_record( rel, rec ); + + // TODO - Loop again, merge individual record scores into clusters + // Can I reset the reclist, or can I leave and enter without race conditions? + + } // cluster loop + + normalize_scores(rel); + reclist_leave(reclist); xfree(idfvec); + } /* diff --git a/src/settings.c b/src/settings.c index 63b8b9b..55f7dc4 100644 --- a/src/settings.c +++ b/src/settings.c @@ -83,6 +83,7 @@ static char *hard_settings[] = { "pz:block_timeout", "pz:extendrecs", "pz:authentication_mode", + "pz:native_score", 0 }; diff --git a/src/settings.h b/src/settings.h index 98278c4..0cd2f78 100644 --- a/src/settings.h +++ b/src/settings.h @@ -56,7 +56,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define PZ_BLOCK_TIMEOUT 33 #define PZ_EXTENDRECS 34 #define PZ_AUTHENTICATION_MODE 35 -#define PZ_MAX_EOF 36 +#define PZ_NATIVE_SCORE 36 +#define PZ_MAX_EOF 37 struct setting { diff --git a/test/test_rank.cfg b/test/test_rank.cfg new file mode 100644 index 0000000..d7c6ef8 --- /dev/null +++ b/test/test_rank.cfg @@ -0,0 +1,44 @@ + + + + + + + + + [[:WhiteSpace:][,.!;]]* } [$] > ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/test_rank.sh b/test/test_rank.sh new file mode 100755 index 0000000..3ff2e8b --- /dev/null +++ b/test/test_rank.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +TEST=`basename $0 .sh` +# srcdir might be set by make +srcdir=${srcdir:-"."} + +exec ${srcdir}/run_pazpar2.sh --icu $TEST + +# Local Variables: +# mode:shell-script +# sh-indentation: 2 +# sh-basic-offset: 4 +# End: diff --git a/test/test_rank.urls b/test/test_rank.urls new file mode 100644 index 0000000..4a8ac44 --- /dev/null +++ b/test/test_rank.urls @@ -0,0 +1,12 @@ +http://localhost:9763/search.pz2?session=1&command=init +test_rank_settings_1.xml http://localhost:9763/search.pz2?session=1&command=settings +http://localhost:9763/search.pz2?session=1&command=search&query=water&sort=relevance +2 http://localhost:9763/search.pz2?session=1&command=show&sort=relevance +http://localhost:9763/search.pz2?session=1&command=init +test_rank_settings_2.xml http://localhost:9763/search.pz2?session=1&command=settings +http://localhost:9763/search.pz2?session=1&command=search&query=water&sort=relevance +2 http://localhost:9763/search.pz2?session=1&command=show&sort=relevance +http://localhost:9763/search.pz2?session=1&command=init +test_rank_settings_3.xml http://localhost:9763/search.pz2?session=1&command=settings +http://localhost:9763/search.pz2?session=1&command=search&query=water&sort=relevance +2 http://localhost:9763/search.pz2?session=1&command=show&sort=relevance diff --git a/test/test_rank_1.res b/test/test_rank_1.res new file mode 100644 index 0000000..c09ee34 --- /dev/null +++ b/test/test_rank_1.res @@ -0,0 +1,3 @@ + +OK1150000 + \ No newline at end of file diff --git a/test/test_rank_10.res b/test/test_rank_10.res new file mode 100644 index 0000000..42534e3 --- /dev/null +++ b/test/test_rank_10.res @@ -0,0 +1,2 @@ + +OK \ No newline at end of file diff --git a/test/test_rank_11.res b/test/test_rank_11.res new file mode 100644 index 0000000..ab63fe6 --- /dev/null +++ b/test/test_rank_11.res @@ -0,0 +1,2 @@ + +OK \ No newline at end of file diff --git a/test/test_rank_12.res b/test/test_rank_12.res new file mode 100644 index 0000000..b40a464 --- /dev/null +++ b/test/test_rank_12.res @@ -0,0 +1,365 @@ + +OK +0 +19 +1995 +0 +19 + + Water management problems and challenges in India + an analytical review + 2000 + Dinesh Kumar, M + book + + Water management problems and challenges in India + an analytical review + 2000 + Dinesh Kumar, M + book + 2.304635 + + 1 + 2000 + content: title water management problems and challenges in india author dinesh kumar m medium book + + + The magic of water + reflection and transparency at the water's edge + 2000 + Hochschwender, Ted + book + + The magic of water + reflection and transparency at the water's edge + 2000 + Hochschwender, Ted + book + 2.231453 + + 1 + 1939 + content: title the magic of water author hochschwender ted medium book + + + Water + 1999 + De Villiers, Marq + book + + Water + 1999 + De Villiers, Marq + book + 2.186368 + + 1 + 1902 + content: title water author de villiers marq medium book + + + Water use for public water supply in Michigan, 1998 + 2000 + "January 3, 2000." + book + + Water use for public water supply in Michigan, 1998 + 2000 + "January 3, 2000." + book + 2.186368 + + 1 + 1902 + content: title water use for public water supply in michigan medium book + + + Report to the IUCN on water demand management country study + Namibia + 1999 + book + + Report to the IUCN on water demand management country study + Namibia + 1999 + book + 2.114981 + + 1 + 1843 + content: title report to the iucn on water demand management country study medium book + + + Evaluation and control of water pollution in Bhavani Basin + final report + 1998 + "Funded by Institute for water Studies, Water Resources Organisation (PWD)." + book + + Evaluation and control of water pollution in Bhavani Basin + final report + 1998 + "Funded by Institute for water Studies, Water Resources Organisation (PWD)." + With reference to India + book + 2.061328 + + 1 + 1798 + content: title evaluation and control of water pollution in bhavani basin medium book + + + UNSIA Water Cluster + priorities and strategies for water in Africa + 2000 + "United Nations System-wide Initiative on Africa (UNSIA)." + book + + UNSIA Water Cluster + priorities and strategies for water in Africa + 2000 + "United Nations System-wide Initiative on Africa (UNSIA)." + book + 2.061328 + + 1 + 1798 + content: title unsia water cluster medium book + + + Water and water supplies + 1901 + Thresh, John Clough + book + + Water and water supplies + 1901 + Thresh, John Clough + book + 2.061328 + + 1 + 1798 + content: title water and water supplies author thresh john clough medium book + + + Water + 2000 + Majeed, Abdul + "Balochistan conservation strategy background paper"--T.p + book + + Water + 2000 + Majeed, Abdul + "Balochistan conservation strategy background paper"--T.p + book + 2.061328 + + 1 + 1798 + content: title water author majeed abdul medium book + + + Water law + 2000 + Fisher, D. E + Includes index + book + + Water law + 2000 + Fisher, D. E + Includes index + book + 2.061328 + + 1 + 1798 + content: title water law author fisher d e medium book + + + Water technology management + 2001 + Collection of articles with reference to India + book + + Water technology management + 2001 + Collection of articles with reference to India + book + 2.061328 + + 1 + 1798 + content: title water technology management medium book + + + Wonderful water + 2001 + Glover, David + book + + Wonderful water + 2001 + Glover, David + book + 2.037029 + + 1 + 1778 + content: title wonderful water author glover david medium book + + + A Primer on fresh water + questions and answers + 2000 + Issued also in French under title: Notions élémentaires sur l'eau douce : questions et réponses + book + + A Primer on fresh water + questions and answers + 2000 + Issued also in French under title: Notions élémentaires sur l'eau douce : questions et réponses + Includes index + book + 2.016555 + + 1 + 1761 + content: title a primer on fresh water medium book + + + Water quality assessment of the State Water Project, 1996-97 + 1999-2000 + "September 1999." + book + + Water quality assessment of the State Water Project, 1996-97 + 1999 + Cover title + "September 1999." + book + 2.016555 + + + Water quality assessment of the State Water Project, 1998-99 + 2000 + Cover title + "July 2000." + book + 2.016555 + + 2 + 1761 + content: title water quality assessment of the state water project medium book + + + District water supply plan + 2000 + [1] [No special title] -- [2] Appendixes + book + + District water supply plan + 2000 + [1] [No special title] -- [2] Appendixes + book + 1.928196 + + 1 + 1688 + content: title district water supply plan medium book + + + Proposition 13 + Safe Drinking Water, Clean Water, Watershed Protection, and Flood Protection Act + 2000 + "March 2000." + book + + Proposition 13 + Safe Drinking Water, Clean Water, Watershed Protection, and Flood Protection Act + 2000 + "March 2000." + book + 1.928196 + + 1 + 1688 + content: title proposition medium book + + + 1999 wastewater and drinking water user charge survey + 1999 + "December, 1999." + book + + 1999 wastewater and drinking water user charge survey + 1999 + Cover title + "December, 1999." + book + 1.928196 + + 1 + 1688 + content: title wastewater and drinking water user charge survey medium book + + + Water in press, 1997 + an index of news items on water resources selected from leading news papers + 1998 + With reference to India + book + + Water in press, 1997 + an index of news items on water resources selected from leading news papers + 1998 + Includes index + With reference to India + book + 1.928196 + + 1 + 1688 + content: title water in press medium book + + + Who governs water? + the politics of water resource management + 1999 + Frey, Hans + book + + Who governs water? + the politics of water resource management + 1999 + Frey, Hans + book + 1.928196 + + 1 + 1688 + content: title who governs water author frey hans medium book + + \ No newline at end of file diff --git a/test/test_rank_2.res b/test/test_rank_2.res new file mode 100644 index 0000000..42534e3 --- /dev/null +++ b/test/test_rank_2.res @@ -0,0 +1,2 @@ + +OK \ No newline at end of file diff --git a/test/test_rank_3.res b/test/test_rank_3.res new file mode 100644 index 0000000..ab63fe6 --- /dev/null +++ b/test/test_rank_3.res @@ -0,0 +1,2 @@ + +OK \ No newline at end of file diff --git a/test/test_rank_4.res b/test/test_rank_4.res new file mode 100644 index 0000000..b9ecd5e --- /dev/null +++ b/test/test_rank_4.res @@ -0,0 +1,365 @@ + +OK +0 +19 +1995 +0 +19 + + Water + 1999 + De Villiers, Marq + book + + Water + 1999 + De Villiers, Marq + book + 2.186368 + + 1 + 56108 + content: title water author de villiers marq medium book + + + Water + 2000 + Majeed, Abdul + "Balochistan conservation strategy background paper"--T.p + book + + Water + 2000 + Majeed, Abdul + "Balochistan conservation strategy background paper"--T.p + book + 2.061328 + + 1 + 48790 + content: title water author majeed abdul medium book + + + Water law + 2000 + Fisher, D. E + Includes index + book + + Water law + 2000 + Fisher, D. E + Includes index + book + 2.061328 + + 1 + 43911 + content: title water law author fisher d e medium book + + + A Primer on fresh water + questions and answers + 2000 + Issued also in French under title: Notions élémentaires sur l'eau douce : questions et réponses + book + + A Primer on fresh water + questions and answers + 2000 + Issued also in French under title: Notions élémentaires sur l'eau douce : questions et réponses + Includes index + book + 2.016555 + + 1 + 42447 + content: title a primer on fresh water medium book + + + Water and water supplies + 1901 + Thresh, John Clough + book + + Water and water supplies + 1901 + Thresh, John Clough + book + 2.061328 + + 1 + 36592 + content: title water and water supplies author thresh john clough medium book + + + Water technology management + 2001 + Collection of articles with reference to India + book + + Water technology management + 2001 + Collection of articles with reference to India + book + 2.061328 + + 1 + 31713 + content: title water technology management medium book + + + Wonderful water + 2001 + Glover, David + book + + Wonderful water + 2001 + Glover, David + book + 2.037029 + + 1 + 29274 + content: title wonderful water author glover david medium book + + + Water management problems and challenges in India + an analytical review + 2000 + Dinesh Kumar, M + book + + Water management problems and challenges in India + an analytical review + 2000 + Dinesh Kumar, M + book + 2.304635 + + 1 + 28577 + content: title water management problems and challenges in india author dinesh kumar m medium book + + + UNSIA Water Cluster + priorities and strategies for water in Africa + 2000 + "United Nations System-wide Initiative on Africa (UNSIA)." + book + + UNSIA Water Cluster + priorities and strategies for water in Africa + 2000 + "United Nations System-wide Initiative on Africa (UNSIA)." + book + 2.061328 + + 1 + 25440 + content: title unsia water cluster medium book + + + Report to the IUCN on water demand management country study + Namibia + 1999 + book + + Report to the IUCN on water demand management country study + Namibia + 1999 + book + 2.114981 + + 1 + 24882 + content: title report to the iucn on water demand management country study medium book + + + Water use for public water supply in Michigan, 1998 + 2000 + "January 3, 2000." + book + + Water use for public water supply in Michigan, 1998 + 2000 + "January 3, 2000." + book + 2.186368 + + 1 + 21955 + content: title water use for public water supply in michigan medium book + + + Who governs water? + the politics of water resource management + 1999 + Frey, Hans + book + + Who governs water? + the politics of water resource management + 1999 + Frey, Hans + book + 1.928196 + + 1 + 21142 + content: title who governs water author frey hans medium book + + + Evaluation and control of water pollution in Bhavani Basin + final report + 1998 + "Funded by Institute for water Studies, Water Resources Organisation (PWD)." + book + + Evaluation and control of water pollution in Bhavani Basin + final report + 1998 + "Funded by Institute for water Studies, Water Resources Organisation (PWD)." + With reference to India + book + 2.061328 + + 1 + 20817 + content: title evaluation and control of water pollution in bhavani basin medium book + + + District water supply plan + 2000 + [1] [No special title] -- [2] Appendixes + book + + District water supply plan + 2000 + [1] [No special title] -- [2] Appendixes + book + 1.928196 + + 1 + 19516 + content: title district water supply plan medium book + + + 1999 wastewater and drinking water user charge survey + 1999 + "December, 1999." + book + + 1999 wastewater and drinking water user charge survey + 1999 + Cover title + "December, 1999." + book + 1.928196 + + 1 + 18819 + content: title wastewater and drinking water user charge survey medium book + + + Water quality assessment of the State Water Project, 1996-97 + 1999-2000 + "September 1999." + book + + Water quality assessment of the State Water Project, 1996-97 + 1999 + Cover title + "September 1999." + book + 2.016555 + + + Water quality assessment of the State Water Project, 1998-99 + 2000 + Cover title + "July 2000." + book + 2.016555 + + 2 + 18296 + content: title water quality assessment of the state water project medium book + + + Water in press, 1997 + an index of news items on water resources selected from leading news papers + 1998 + With reference to India + book + + Water in press, 1997 + an index of news items on water resources selected from leading news papers + 1998 + Includes index + With reference to India + book + 1.928196 + + 1 + 16513 + content: title water in press medium book + + + The magic of water + reflection and transparency at the water's edge + 2000 + Hochschwender, Ted + book + + The magic of water + reflection and transparency at the water's edge + 2000 + Hochschwender, Ted + book + 2.231453 + + 1 + 15246 + content: title the magic of water author hochschwender ted medium book + + + Proposition 13 + Safe Drinking Water, Clean Water, Watershed Protection, and Flood Protection Act + 2000 + "March 2000." + book + + Proposition 13 + Safe Drinking Water, Clean Water, Watershed Protection, and Flood Protection Act + 2000 + "March 2000." + book + 1.928196 + + 1 + 11753 + content: title proposition medium book + + \ No newline at end of file diff --git a/test/test_rank_5.res b/test/test_rank_5.res new file mode 100644 index 0000000..fb142f0 --- /dev/null +++ b/test/test_rank_5.res @@ -0,0 +1,3 @@ + +OK2150000 + \ No newline at end of file diff --git a/test/test_rank_6.res b/test/test_rank_6.res new file mode 100644 index 0000000..42534e3 --- /dev/null +++ b/test/test_rank_6.res @@ -0,0 +1,2 @@ + +OK \ No newline at end of file diff --git a/test/test_rank_7.res b/test/test_rank_7.res new file mode 100644 index 0000000..ab63fe6 --- /dev/null +++ b/test/test_rank_7.res @@ -0,0 +1,2 @@ + +OK \ No newline at end of file diff --git a/test/test_rank_8.res b/test/test_rank_8.res new file mode 100644 index 0000000..35002b0 --- /dev/null +++ b/test/test_rank_8.res @@ -0,0 +1,365 @@ + +OK +0 +19 +1995 +0 +19 + + Water management problems and challenges in India + an analytical review + 2000 + Dinesh Kumar, M + book + + Water management problems and challenges in India + an analytical review + 2000 + Dinesh Kumar, M + book + 2.304635 + + 1 + 10000 + content: title water management problems and challenges in india author dinesh kumar m medium book + + + The magic of water + reflection and transparency at the water's edge + 2000 + Hochschwender, Ted + book + + The magic of water + reflection and transparency at the water's edge + 2000 + Hochschwender, Ted + book + 2.231453 + + 1 + 5000 + content: title the magic of water author hochschwender ted medium book + + + Water + 1999 + De Villiers, Marq + book + + Water + 1999 + De Villiers, Marq + book + 2.186368 + + 1 + 3333 + content: title water author de villiers marq medium book + + + Water use for public water supply in Michigan, 1998 + 2000 + "January 3, 2000." + book + + Water use for public water supply in Michigan, 1998 + 2000 + "January 3, 2000." + book + 2.186368 + + 1 + 2500 + content: title water use for public water supply in michigan medium book + + + Report to the IUCN on water demand management country study + Namibia + 1999 + book + + Report to the IUCN on water demand management country study + Namibia + 1999 + book + 2.114981 + + 1 + 2000 + content: title report to the iucn on water demand management country study medium book + + + Water + 2000 + Majeed, Abdul + "Balochistan conservation strategy background paper"--T.p + book + + Water + 2000 + Majeed, Abdul + "Balochistan conservation strategy background paper"--T.p + book + 2.061328 + + 1 + 1666 + content: title water author majeed abdul medium book + + + Water law + 2000 + Fisher, D. E + Includes index + book + + Water law + 2000 + Fisher, D. E + Includes index + book + 2.061328 + + 1 + 1428 + content: title water law author fisher d e medium book + + + Evaluation and control of water pollution in Bhavani Basin + final report + 1998 + "Funded by Institute for water Studies, Water Resources Organisation (PWD)." + book + + Evaluation and control of water pollution in Bhavani Basin + final report + 1998 + "Funded by Institute for water Studies, Water Resources Organisation (PWD)." + With reference to India + book + 2.061328 + + 1 + 1250 + content: title evaluation and control of water pollution in bhavani basin medium book + + + UNSIA Water Cluster + priorities and strategies for water in Africa + 2000 + "United Nations System-wide Initiative on Africa (UNSIA)." + book + + UNSIA Water Cluster + priorities and strategies for water in Africa + 2000 + "United Nations System-wide Initiative on Africa (UNSIA)." + book + 2.061328 + + 1 + 1111 + content: title unsia water cluster medium book + + + Water technology management + 2001 + Collection of articles with reference to India + book + + Water technology management + 2001 + Collection of articles with reference to India + book + 2.061328 + + 1 + 1000 + content: title water technology management medium book + + + Water and water supplies + 1901 + Thresh, John Clough + book + + Water and water supplies + 1901 + Thresh, John Clough + book + 2.061328 + + 1 + 909 + content: title water and water supplies author thresh john clough medium book + + + Wonderful water + 2001 + Glover, David + book + + Wonderful water + 2001 + Glover, David + book + 2.037029 + + 1 + 833 + content: title wonderful water author glover david medium book + + + Water quality assessment of the State Water Project, 1996-97 + 1999-2000 + "September 1999." + book + + Water quality assessment of the State Water Project, 1996-97 + 1999 + Cover title + "September 1999." + book + 2.016555 + + + Water quality assessment of the State Water Project, 1998-99 + 2000 + Cover title + "July 2000." + book + 2.016555 + + 2 + 769 + content: title water quality assessment of the state water project medium book + + + A Primer on fresh water + questions and answers + 2000 + Issued also in French under title: Notions élémentaires sur l'eau douce : questions et réponses + book + + A Primer on fresh water + questions and answers + 2000 + Issued also in French under title: Notions élémentaires sur l'eau douce : questions et réponses + Includes index + book + 2.016555 + + 1 + 666 + content: title a primer on fresh water medium book + + + Who governs water? + the politics of water resource management + 1999 + Frey, Hans + book + + Who governs water? + the politics of water resource management + 1999 + Frey, Hans + book + 1.928196 + + 1 + 625 + content: title who governs water author frey hans medium book + + + 1999 wastewater and drinking water user charge survey + 1999 + "December, 1999." + book + + 1999 wastewater and drinking water user charge survey + 1999 + Cover title + "December, 1999." + book + 1.928196 + + 1 + 588 + content: title wastewater and drinking water user charge survey medium book + + + Proposition 13 + Safe Drinking Water, Clean Water, Watershed Protection, and Flood Protection Act + 2000 + "March 2000." + book + + Proposition 13 + Safe Drinking Water, Clean Water, Watershed Protection, and Flood Protection Act + 2000 + "March 2000." + book + 1.928196 + + 1 + 555 + content: title proposition medium book + + + District water supply plan + 2000 + [1] [No special title] -- [2] Appendixes + book + + District water supply plan + 2000 + [1] [No special title] -- [2] Appendixes + book + 1.928196 + + 1 + 526 + content: title district water supply plan medium book + + + Water in press, 1997 + an index of news items on water resources selected from leading news papers + 1998 + With reference to India + book + + Water in press, 1997 + an index of news items on water resources selected from leading news papers + 1998 + Includes index + With reference to India + book + 1.928196 + + 1 + 500 + content: title water in press medium book + + \ No newline at end of file diff --git a/test/test_rank_9.res b/test/test_rank_9.res new file mode 100644 index 0000000..ef5625a --- /dev/null +++ b/test/test_rank_9.res @@ -0,0 +1,3 @@ + +OK3150000 + \ No newline at end of file diff --git a/test/test_rank_settings_1.xml b/test/test_rank_settings_1.xml new file mode 100644 index 0000000..6ca8973 --- /dev/null +++ b/test/test_rank_settings_1.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/test_rank_settings_2.xml b/test/test_rank_settings_2.xml new file mode 100644 index 0000000..a003e95 --- /dev/null +++ b/test/test_rank_settings_2.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/test_rank_settings_3.xml b/test/test_rank_settings_3.xml new file mode 100644 index 0000000..3f51f26 --- /dev/null +++ b/test/test_rank_settings_3.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +