-
- s = Z3950_query_create ();
- if (Z3950_query_prefix (s, *args))
- {
- fprintf (stderr, "Bad PQF: %s\n", *args);
- return;
- }
- for (i = 0; i<MAX_CON; i++)
- {
- if (c[i])
- {
- Z3950_resultset_destroy (r[i]);
- r[i] = 0;
- }
- if (c[i])
- r[i] = Z3950_connection_search (c[i], s);
- }
-
- while (Z3950_event (MAX_CON, c))
- ;
-
- for (i = 0; i<MAX_CON; i++)
- {
- int error;
- const char *errmsg, *addinfo;
- /* display errors if any */
- if (!c[i])
- continue;
- if ((error = Z3950_connection_error(c[i], &errmsg, &addinfo)))
- fprintf (stderr, "%s error: %s (%d) %s\n",
- Z3950_connection_option_get(c[i], "host"), errmsg,
- error, addinfo);
- else if (r[i])
- {
- /* OK, no major errors. Look at the result count */
- int start = Z3950_options_get_int (options, "start", 0);
- int count = Z3950_options_get_int (options, "count", 0);
-
- printf ("%s: %d hits\n", Z3950_connection_option_get(c[i], "host"),
- Z3950_resultset_size(r[i]));
- /* and display */
- display_records (c[i], r[i], start, count);
- }
- }
- Z3950_query_destroy (s);
+ printf("Facets: \n");
+ for (i = 0; i < count; i++)
+ {
+ int j;
+ const char *facet_name = ZOOM_facet_field_name(facets[i]);
+ printf(" %s: \n", facet_name);
+ for (j = 0; j < ZOOM_facet_field_term_count(facets[i]); j++)
+ {
+ int freq = 0;
+ const char *term = ZOOM_facet_field_get_term(facets[i], j, &freq);
+ printf(" %s(%d) \n", term, freq);
+ }
+ }
+}
+
+static int cmd_facets(struct zoom_sh *sh, const char **args)
+{
+ struct zoom_db *db;
+ int ret = 0;
+
+ process_events(sh);
+
+ for (db = sh->list; db; db = db->next)
+ {
+ int error;
+ const char *errmsg, *addinfo, *dset;
+ /* display errors if any */
+ if (!db->con)
+ continue;
+ if ((error = ZOOM_connection_error_x(db->con, &errmsg, &addinfo,
+ &dset)))
+ {
+ printf("%s error: %s (%s:%d) %s\n",
+ ZOOM_connection_option_get(db->con, "host"), errmsg,
+ dset, error, addinfo);
+ ret = 1;
+ }
+ else if (db->res)
+ {
+ int num_facets = ZOOM_resultset_facets_size(db->res);
+ if (num_facets) {
+ ZOOM_facet_field *facets = ZOOM_resultset_facets(db->res);
+ display_facets(facets, num_facets);
+ }
+ }
+ }
+ return ret;
+}
+
+static int cmd_suggestions(struct zoom_sh *sh, const char **args)
+{
+ struct zoom_db *db;
+ int ret = 0;
+
+ process_events(sh);
+
+ for (db = sh->list; db; db = db->next)
+ {
+ int error;
+ const char *errmsg, *addinfo, *dset;
+ /* display errors if any */
+ if (!db->con)
+ continue;
+ if ((error = ZOOM_connection_error_x(db->con, &errmsg, &addinfo,
+ &dset)))
+ {
+ printf("%s error: %s (%s:%d) %s\n",
+ ZOOM_connection_option_get(db->con, "host"), errmsg,
+ dset, error, addinfo);
+ ret = 1;
+ }
+ else if (db->res)
+ {
+ const char *suggestions =
+ ZOOM_resultset_option_get(db->res, "suggestions");
+ if (suggestions)
+ printf("Suggestions: \n%s\n", suggestions);
+ }
+ }
+ return ret;
+}
+
+static int cmd_ext(struct zoom_sh *sh, const char **args)
+{
+ int ret = 0;
+ ZOOM_package *p = 0;
+ struct zoom_db *db;
+ int i, number;
+ WRBUF ext_type_str = next_token_new_wrbuf(args);
+
+ if (!ext_type_str)
+ {
+ printf("es: missing type "
+ "(itemorder, create, drop, commit, update, xmlupdate)\n");
+ return 1;
+ }
+ for (number = 0, db = sh->list; db; db = db->next)
+ if (db->con)
+ number++;
+
+ p = xmalloc(sizeof(*p) * number);
+
+ for (i = 0, db = sh->list; db; db = db->next)
+ if (db->con)
+ {
+ p[i] = ZOOM_connection_package(db->con, 0);
+ ZOOM_package_send(p[i], ext_type_str ? wrbuf_cstr(ext_type_str):0);
+ i++;
+ }
+
+ process_events(sh);
+
+ for (i = 0, db = sh->list; db; db = db->next)
+ {
+ int error;
+ const char *errmsg, *addinfo, *dset;
+ /* display errors if any */
+ if (!db->con)
+ continue;
+ if ((error = ZOOM_connection_error_x(db->con, &errmsg, &addinfo,
+ &dset)))
+ {
+ printf("%s error: %s (%s:%d) %s\n",
+ ZOOM_connection_option_get(db->con, "host"), errmsg,
+ dset, error, addinfo);
+ ret = 1;
+ }
+ else if (p[i])
+ {
+ const char *v;
+ printf("ok\n");
+ v = ZOOM_package_option_get(p[i], "targetReference");
+ if (v)
+ printf("targetReference: %s\n", v);
+ v = ZOOM_package_option_get(p[i], "xmlUpdateDoc");
+ if (v)
+ printf("xmlUpdateDoc: %s\n", v);
+ }
+ ZOOM_package_destroy(p[i]);
+ i++;
+ }
+ if (ext_type_str)
+ wrbuf_destroy(ext_type_str);
+ xfree(p);
+ return ret;
+}
+
+static int cmd_debug(struct zoom_sh *sh, const char **args)
+{
+ yaz_log_init_level(YLOG_ALL);
+ return 0;