+ 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;