/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2011 Index Data
+ * Copyright (C) 1995-2012 Index Data
* See the file LICENSE for details.
*/
/** \file client.c
static char cql_fields[512] = "/usr/local/share/yaz/etc/pqf.properties";
static char *esPackageName = 0;
static char *yazProxy = 0;
-static int kilobytes = 1024;
+static int kilobytes = 64 * 1024;
static char *negotiationCharset = 0;
static int negotiationCharsetRecords = 1;
static int negotiationCharsetVersion = 3;
static int scan_size = 20;
static char cur_host[200];
static Odr_int last_hit_count = 0;
-
static int pretty_xml = 0;
+static Odr_int sru_maximumRecords = 0;
typedef enum {
QueryType_Prefix,
printf("Only CQL and PQF supported in SRW\n");
return 0;
}
+ sru_maximumRecords = 0;
sr->u.request->maximumRecords = odr_intdup(out, 0);
sr->u.request->facetList = facet_list;
if (record_schema)
struct yaz_facet_attr attr_values;
attr_values.errcode = 0;
attr_values.limit = -1;
- attr_values.useattr = 0;
+ attr_values.useattr = "NONE";
attr_values.relation = "default";
yaz_facet_attr_get_z_attributes(al, &attr_values);
if (!attr_values.errcode)
{
int term_index;
- printf(" %s (%d): \n", attr_values.useattr, /* attr_values.relation, attr_values.limit, */ facet->num_terms);
+ printf(" %s (%d): \n", attr_values.useattr, facet->num_terms);
for (term_index = 0 ; term_index < facet->num_terms; term_index++)
{
Z_FacetTerm *facetTerm = facet->terms[term_index];
}
else
{
+ item_request_buf = odr_getbuf (out, &item_request_size, 0);
r = (Z_External *) odr_malloc(out, sizeof(*r));
r->direct_reference = odr_oiddup(out, yaz_oid_general_isoill_1);
r->indirect_reference = 0;
if (!parse_show_args(arg, setstring, &setno, &nos))
return 0;
sr->u.request->startRecord = odr_intdup(out, setno);
+ sru_maximumRecords = nos;
sr->u.request->maximumRecords = odr_intdup(out, nos);
if (record_schema)
sr->u.request->recordSchema = record_schema;
printf("Number of hits: " ODR_INT_PRINTF "\n", *res->numberOfRecords);
if (res->facetList)
display_facets(res->facetList);
- for (i = 0; i<res->num_records; i++)
+ if (res->suggestions)
+ printf("Suggestions:\n%s\n", res->suggestions);
+ for (i = 0; i < res->num_records; i++)
+ {
+ if (i >= sru_maximumRecords)
+ {
+ printf("SRU server returns extra records. Skipping "
+ ODR_INT_PRINTF " records.\n",
+ res->num_records - sru_maximumRecords);
+ break;
+ }
handle_srw_record(res->records + i);
+ }
}
static void handle_srw_scan_term(Z_SRW_scanTerm *term)
{
Z_SOAP *soap_package = 0;
ODR o = odr_createmem(ODR_DECODE);
- Z_SOAP_Handler soap_handlers[3] = {
+ Z_SOAP_Handler soap_handlers[4] = {
{YAZ_XMLNS_SRU_v1_1, 0, (Z_SOAP_fun) yaz_srw_codec},
+ {YAZ_XMLNS_SRU_v2_response, 0, (Z_SOAP_fun) yaz_srw_codec},
{YAZ_XMLNS_UPDATE_v0_9, 0, (Z_SOAP_fun) yaz_ucp_codec},
{0, 0, 0}
};