X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=include%2Fidzebra%2Fapi.h;h=82bf7ce54686ffb02c1cac34a19388781961b096;hp=cf6c387ea7f4f1478b6e8959c771a4651fc9bd29;hb=16853a7593f10680ea8d6895aa0720b9af3779e6;hpb=f2f159d942dae64203f266941c76bc487e33714e diff --git a/include/idzebra/api.h b/include/idzebra/api.h index cf6c387..82bf7ce 100644 --- a/include/idzebra/api.h +++ b/include/idzebra/api.h @@ -1,8 +1,5 @@ -/* $Id: api.h,v 1.29 2005-08-09 10:01:03 adam Exp $ - Copyright (C) 1995-2005 - Index Data ApS - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 1994-2010 Index Data Zebra is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -15,16 +12,16 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with Zebra; see the file LICENSE.zebra. If not, write to the -Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ /** \file api.h \brief Zebra API Return codes: - Most functions return ZEBRA_RES, where ZEBRA_FAIL indicates + Most functions has return type ZEBRA_RES, where ZEBRA_FAIL indicates failure; ZEBRA_OK indicates success. */ @@ -32,18 +29,18 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #define IDZEBRA_API_H #include -#include #include #include #include +#include YAZ_BEGIN_CDECL typedef struct { - int processed; - int inserted; - int updated; - int deleted; + zint processed; + zint inserted; + zint updated; + zint deleted; long utime; long stime; } ZebraTransactionStatus; @@ -55,16 +52,17 @@ typedef struct { int position; /* position of record in result set (1,2,..) */ char *buf; /* record buffer (void pointer really) */ int len; /* length */ - oid_value format; /* record syntax */ + const Odr_oid *format; /* record syntax */ char *base; - SYSNO sysno; + zint sysno; int score; } ZebraRetrievalRecord; /** Scan Term Descriptor */ typedef struct { - int occurrences; /* scan term occurrences */ + zint occurrences; /* scan term occurrences */ char *term; /* scan term string */ + char *display_term; /* display scan term entry */ } ZebraScanEntry; /** \var ZebraHandle @@ -77,18 +75,16 @@ typedef struct zebra_session *ZebraHandle; */ typedef struct zebra_service *ZebraService; -/** \fn ZebraService zebra_start(const char *configName) - \brief starts a Zebra service. +/** \brief Creates a Zebra Service. \param configName name of configuration file This function is a simplified version of zebra_start_res. */ YAZ_EXPORT -ZebraService zebra_start(const char *configName); +ZebraService zebra_start(const char *configName + ) ZEBRA_GCC_ATTR((warn_unused_result)); -/** \fn ZebraService zebra_start_res(const char *configName, \ - Res def_res, Res over_res) - \brief starts a Zebra service with resources. +/** \brief Creates a Zebra service with resources. \param configName name of configuration file \param def_res default resources \param over_res overriding resources @@ -98,124 +94,126 @@ ZebraService zebra_start(const char *configName); */ YAZ_EXPORT ZebraService zebra_start_res(const char *configName, - Res def_res, Res over_res); + Res def_res, Res over_res + ) ZEBRA_GCC_ATTR((warn_unused_result)); -/** - \brief stops a Zebra service. - \param zs service handle - - Frees resources used by the service. +/** \brief stops a Zebra service. + \param zs service handle + + Frees resources used by the service. */ YAZ_EXPORT ZEBRA_RES zebra_stop(ZebraService zs); -/** - \brief Lists enabled Zebra filters - \param zs service handle - \param cd callback parameter (opaque) - \param cb callback function - */ +/** \brief Lists enabled Zebra filters + \param zs service handle + \param cd callback parameter (opaque) + \param cb callback function +*/ YAZ_EXPORT void zebra_filter_info(ZebraService zs, void *cd, void (*cb)(void *cd, const char *name)); -/** - \brief Creates a Zebra session handle within service. - \param zs service handle. - - There should be one handle for each thread doing something - with zebra, be that searching or indexing. In simple apps - one handle is sufficient +/** \brief Creates a Zebra session handle within service. + \param zs service handle. + \param res resources to be used for the service (NULL for none) + + There should be one handle for each thread doing something + with zebra, be that searching or indexing. In simple apps + one handle is sufficient */ YAZ_EXPORT -ZebraHandle zebra_open(ZebraService zs); +ZebraHandle zebra_open(ZebraService zs, Res res + ) ZEBRA_GCC_ATTR((warn_unused_result)); -/** - \brief Destroys Zebra session handle. - \param zh zebra session handle. +/** \brief Destroys Zebra session handle. + \param zh zebra session handle. */ YAZ_EXPORT ZEBRA_RES zebra_close(ZebraHandle zh); -/** - \brief Returns error code for last error - \param zh zebra session handle. +/** \brief Returns error code for last error + \param zh zebra session handle. */ YAZ_EXPORT int zebra_errCode(ZebraHandle zh); -/** - \brief Returns error string for last error - \param zh zebra session handle. +/** \brief Returns error string for last error + \param zh zebra session handle. */ YAZ_EXPORT const char *zebra_errString(ZebraHandle zh); -/** - \brief Returns additional info for last error - \param zh zebra session handle. +/** \brief Returns additional info for last error + \param zh zebra session handle. */ YAZ_EXPORT char *zebra_errAdd(ZebraHandle zh); -/** - \brief Returns error code and additional info for last error - \param zh zebra session handle. - \param code pointer to returned error code - \param addinfo pointer to returned additional info +/** \brief Returns error code and additional info for last error + \param zh zebra session handle. + \param code pointer to returned error code + \param addinfo pointer to returned additional info */ YAZ_EXPORT void zebra_result(ZebraHandle zh, int *code, char **addinfo); -/** - \brief Clears last error. + +/** \brief Returns character set encoding for session \param zh zebra session handle. + \returns encoding name (e.g. "iso-8859-1") */ YAZ_EXPORT -void zebra_clearError(ZebraHandle zh); - +const char *zebra_get_encoding(ZebraHandle zh); -/** - \brief Set limit before Zebra does approx hit count - \param zh session handle - \param approx_limit the limit - - Results will be approximiate if hit count is greater than the - limit specified. By default there is a high-limit (no limit). +/** \brief Set limit before Zebra does approx hit count + \param zh session handle + \param approx_limit the limit + + Results will be approximiate if hit count is greater than the + limit specified. By default there is a high-limit (no limit). */ ZEBRA_RES zebra_set_approx_limit(ZebraHandle zh, zint approx_limit); -/** - \brief Search using PQF Query - \param zh session handle - \param pqf_query query - \param setname name of resultset - \param hits of hits is returned - */ +/** \brief Search using PQF Query String + \param zh session handle + \param pqf_query query + \param setname name of resultset + \param hits of hits is returned +*/ YAZ_EXPORT ZEBRA_RES zebra_search_PQF(ZebraHandle zh, const char *pqf_query, const char *setname, zint *hits); -/** \fn ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query, \ - const char *setname, zint *hits) - \brief Search using RPN Query +/** \brief Search using RPN Query structure (from ASN.1) \param zh session handle \param o ODR handle \param query RPN query using YAZ structure \param setname name of resultset \param hits number of hits is returned - */ + \param estimated_hit_count whether hit count is an estimate + \param partial_resultset whether result is only partially evaluated +*/ +YAZ_EXPORT +ZEBRA_RES zebra_search_RPN_x(ZebraHandle zh, ODR o, Z_RPNQuery *query, + const char *setname, zint *hits, + int *estimated_hit_count, + int *partial_resultset); + + +/** \brief Search using RPN Query structure (from ASN.1) + \param zh session handle + \param o ODR handle + \param query RPN query using YAZ structure + \param setname name of resultset + \param hits number of hits is returned +*/ YAZ_EXPORT ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query, const char *setname, zint *hits); -/** - \fn ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream, \ - const char *setname, Z_RecordComposition *comp, \ - oid_value input_format, int num_recs, \ - ZebraRetrievalRecord *recs) - \brief Retrieve records from result set (after search) +/** \brief Retrieve records from result set (after search) \param zh session handle \param stream allocate records returned using this ODR \param setname name of result set to retrieve records from @@ -228,16 +226,15 @@ YAZ_EXPORT ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream, const char *setname, Z_RecordComposition *comp, - oid_value input_format, + const Odr_oid *input_format, int num_recs, ZebraRetrievalRecord *recs); -/** - \brief Deletes one or more resultsets - \param zh session handle - \param function Z_DeleteResultSetRequest_{list,all} - \param num_setnames number of result sets - \param setnames result set names - \param statuses status result +/** \brief Deletes one or more resultsets + \param zh session handle + \param function Z_DeleteResultSetRequest_{list,all} + \param num_setnames number of result sets + \param setnames result set names + \param statuses status result */ YAZ_EXPORT int zebra_deleteResultSet(ZebraHandle zh, int function, @@ -245,38 +242,36 @@ int zebra_deleteResultSet(ZebraHandle zh, int function, int *statuses); -/** - \brief returns number of term info terms assocaited with result set - \param zh session handle - \param setname result set name - \param num_terms number of terms returned in this integer - - This function is used in conjunction with zebra_result_set_term_info. - If operation was successful, ZEBRA_OK is returned; otherwise - ZEBRA_FAIL is returned (typically non-existing setname) +/** \brief returns number of term info terms assocaited with result set + \param zh session handle + \param setname result set name + \param num_terms number of terms returned in this integer + + This function is used in conjunction with zebra_result_set_term_info. + If operation was successful, ZEBRA_OK is returned; otherwise + ZEBRA_FAIL is returned (typically non-existing setname) */ YAZ_EXPORT ZEBRA_RES zebra_result_set_term_no(ZebraHandle zh, const char *setname, int *num_terms); -/** - \brief returns information about a term assocated with a result set - \param zh session handle - \param setname result set name - \param no the term we want to know about (0=first, 1=second,..) - \param count the number of occurrences of this term, aka hits (output) - \param approx about hits: 0=exact,1=approx (output) - \param termbuf buffer for term string (intput, output) - \param termlen size of termbuf (input=max, output=actual length) - \param term_ref_id if non-NULL *term_ref_id holds term reference - - Returns information about one search term associated with result set. - Use zebra_result_set_term_no to read total number of terms associated - with result set. If this function can not return information, - due to no out of range or bad result set name, ZEBRA_FAIL is - returned. - The passed termbuf must be able to hold at least *termlen characters. - Upon completion, *termlen holds actual length of search term. +/** \brief returns information about a term assocated with a result set + \param zh session handle + \param setname result set name + \param no the term we want to know about (0=first, 1=second,..) + \param count the number of occurrences of this term, aka hits (output) + \param approx about hits: 0=exact,1=approx (output) + \param termbuf buffer for term string (intput, output) + \param termlen size of termbuf (input=max, output=actual length) + \param term_ref_id if non-NULL *term_ref_id holds term reference + + Returns information about one search term associated with result set. + Use zebra_result_set_term_no to read total number of terms associated + with result set. If this function can not return information, + due to no out of range or bad result set name, ZEBRA_FAIL is + returned. + The passed termbuf must be able to hold at least *termlen characters. + Upon completion, *termlen holds actual length of search term. */ YAZ_EXPORT ZEBRA_RES zebra_result_set_term_info(ZebraHandle zh, const char *setname, @@ -285,76 +280,72 @@ ZEBRA_RES zebra_result_set_term_info(ZebraHandle zh, const char *setname, const char **term_ref_id); -/** - \brief performs Scan (Z39.50 style) - \param zh session handle - \param stream ODR handle for result - \param zapt Attribute plus Term (start term) - \param attributeset Attributeset for Attribute plus Term - \param position input/output position - \param num_entries number of terms requested / returned - \param entries list of resulting terms (ODR allocated) - \param is_partial upon return 1=partial, 0=complete - \param setname limit scan by this set (NULL means no limit) +/** \brief performs Scan (Z39.50 style) + \param zh session handle + \param stream ODR handle for result + \param zapt Attribute plus Term (start term) + \param attributeset Attributeset for Attribute plus Term + \param position input/output position + \param num_entries number of terms requested / returned + \param entries list of resulting terms (ODR allocated) + \param is_partial upon return 1=partial, 0=complete + \param setname limit scan by this set (NULL means no limit) */ YAZ_EXPORT ZEBRA_RES zebra_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, - oid_value attributeset, + const Odr_oid *attributeset, int *position, int *num_entries, ZebraScanEntry **entries, int *is_partial, const char *setname); -/** - \brief performs Scan (taking PQF string) - \param zh session handle - \param stream ODR handle for result - \param query PQF scan query - \param position input/output position - \param num_entries number of terms requested / returned - \param entries list of resulting terms (ODR allocated) - \param is_partial upon return 1=partial, 0=complete - \param setname limit scan by this set (NULL means no limit) +/** \brief performs Scan (taking PQF string) + \param zh session handle + \param stream ODR handle for result + \param query PQF scan query + \param position input/output position + \param num_entries number of terms requested / returned + \param entries list of resulting terms (ODR allocated) + \param is_partial upon return 1=partial, 0=complete + \param setname limit scan by this set (NULL means no limit) */ YAZ_EXPORT ZEBRA_RES zebra_scan_PQF(ZebraHandle zh, ODR stream, const char *query, - int *position, int *num_entries, ZebraScanEntry **entries, - int *is_partial, const char *setname); - -/** - \brief authenticate user. Returns 0 if OK, != 0 on failure - \param zh session handle - \param user user name - \param pass password - */ + int *position, int *num_entries, + ZebraScanEntry **entries, + int *is_partial, const char *setname); + +/** \brief authenticate user. Returns 0 if OK, != 0 on failure + \param zh session handle + \param user user name + \param pass password +*/ YAZ_EXPORT ZEBRA_RES zebra_auth(ZebraHandle zh, const char *user, const char *pass); -/** - \brief Normalize zebra term for register (subject to change!) - \param zh session handle - \param reg_id register ID, 'w', 'p',.. - \param input_str input string buffer - \param input_len input string length - \param output_str output string buffer - \param output_len output string length - */ +/** \brief Normalize zebra term for register (subject to change!) + \param zh session handle + \param index_type "w", "p",.. + \param input_str input string buffer + \param input_len input string length + \param output_str output string buffer + \param output_len output string length +*/ YAZ_EXPORT -int zebra_string_norm(ZebraHandle zh, unsigned reg_id, const char *input_str, - int input_len, char *output_str, int output_len); +int zebra_string_norm(ZebraHandle zh, const char *index_type, + const char *input_str, + int input_len, char *output_str, int output_len); -/** - \brief Creates a database - \param zh session handle - \param db database to be created +/** \brief Creates a database + \param zh session handle + \param db database to be created */ YAZ_EXPORT ZEBRA_RES zebra_create_database(ZebraHandle zh, const char *db); -/** - \brief Deletes a database (drop) - \param zh session handle - \param db database to be deleted +/** \brief Deletes a database (drop) + \param zh session handle + \param db database to be deleted */ YAZ_EXPORT ZEBRA_RES zebra_drop_database(ZebraHandle zh, const char *db); @@ -380,17 +371,12 @@ YAZ_EXPORT ZEBRA_RES zebra_admin_import_end(ZebraHandle zh); YAZ_EXPORT -ZEBRA_RES zebra_admin_exchange_record(ZebraHandle zh, - const char *rec_buf, - size_t rec_len, - const char *recid_buf, size_t recid_len, - int action); - -YAZ_EXPORT -ZEBRA_RES zebra_begin_trans(ZebraHandle zh, int rw); +ZEBRA_RES zebra_begin_trans(ZebraHandle zh, int rw + ) ZEBRA_GCC_ATTR((warn_unused_result)); YAZ_EXPORT -ZEBRA_RES zebra_end_trans(ZebraHandle zh); +ZEBRA_RES zebra_end_trans(ZebraHandle zh + ) ZEBRA_GCC_ATTR((warn_unused_result)); YAZ_EXPORT ZEBRA_RES zebra_end_transaction(ZebraHandle zh, @@ -408,32 +394,47 @@ ZEBRA_RES zebra_init(ZebraHandle zh); YAZ_EXPORT ZEBRA_RES zebra_compact(ZebraHandle zh); -YAZ_EXPORT int zebra_repository_update(ZebraHandle zh, const char *path); -YAZ_EXPORT int zebra_repository_delete(ZebraHandle zh, const char *path); -YAZ_EXPORT int zebra_repository_show(ZebraHandle zh, const char *path); +YAZ_EXPORT +ZEBRA_RES zebra_repository_index(ZebraHandle zh, const char *path, + enum zebra_recctrl_action_t action); + +YAZ_EXPORT +ZEBRA_RES zebra_repository_update(ZebraHandle zh, const char *path); -YAZ_EXPORT int zebra_add_record(ZebraHandle zh, const char *buf, int buf_size); - YAZ_EXPORT -ZEBRA_RES zebra_insert_record(ZebraHandle zh, - const char *recordType, - SYSNO *sysno, const char *match, - const char *fname, - const char *buf, int buf_size, - int force_update); +ZEBRA_RES zebra_repository_delete(ZebraHandle zh, const char *path); + +YAZ_EXPORT +ZEBRA_RES zebra_repository_show(ZebraHandle zh, const char *path); + +/** \brief Simple update record + \param zh session handle + \param buf record buffer + \param buf_size record buffer size + + This function is a simple wrapper or zebra_update_record with + action=action_update (insert or replace) . +*/ +YAZ_EXPORT +ZEBRA_RES zebra_add_record(ZebraHandle zh, const char *buf, int buf_size); + +/** \brief Updates record + \param zh session handle + \param action (insert,replace,delete or update (replace/insert) + \param recordType filter type (0 indicates default) + \param sysno system id (0 may be passed for no known id) + \param match match criteria (0 may be passed for no known criteria) + \param fname filename to be printed for logging (0 may be passed) + \param buf record buffer + \param buf_size record buffer size +*/ YAZ_EXPORT ZEBRA_RES zebra_update_record(ZebraHandle zh, - const char *recordType, - SYSNO *sysno, const char *match, - const char *fname, - const char *buf, int buf_size, - int force_update); -YAZ_EXPORT -ZEBRA_RES zebra_delete_record(ZebraHandle zh, - const char *recordType, - SYSNO *sysno, const char *match, const char *fname, - const char *buf, int buf_size, - int force_update); + enum zebra_recctrl_action_t action, + const char *recordType, + zint *sysno, const char *match, + const char *fname, + const char *buf, int buf_size); YAZ_EXPORT ZEBRA_RES zebra_sort(ZebraHandle zh, ODR stream, @@ -441,14 +442,17 @@ ZEBRA_RES zebra_sort(ZebraHandle zh, ODR stream, const char **input_setnames, const char *output_setname, Z_SortKeySpecList *sort_sequence, - int *sort_status); + int *sort_status + ) ZEBRA_GCC_ATTR((warn_unused_result)); YAZ_EXPORT ZEBRA_RES zebra_select_databases(ZebraHandle zh, int num_bases, - const char **basenames); + const char **basenames + ) ZEBRA_GCC_ATTR((warn_unused_result)); YAZ_EXPORT -ZEBRA_RES zebra_select_database(ZebraHandle zh, const char *basename); +ZEBRA_RES zebra_select_database(ZebraHandle zh, const char *basename + ) ZEBRA_GCC_ATTR((warn_unused_result)); YAZ_EXPORT void zebra_shadow_enable(ZebraHandle zh, int value); @@ -501,6 +505,14 @@ struct BFiles_struct *zebra_get_bfs(ZebraHandle zh); YAZ_EXPORT ZEBRA_RES zebra_set_limit(ZebraHandle zh, int complement_flag, zint *ids); +YAZ_EXPORT +ZEBRA_RES zebra_set_break_handler(ZebraHandle zh, + int (*f)(void *client_data), + void *client_data); + +YAZ_EXPORT +ZEBRA_RES zebra_register_check(ZebraHandle zh); + YAZ_END_CDECL /** \mainpage Zebra @@ -585,3 +597,12 @@ YAZ_END_CDECL */ #endif +/* + * Local variables: + * c-basic-offset: 4 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +