projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixes for hit estimates. Added zebra_set_approx_limit.
[idzebra-moved-to-github.git]
/
index
/
zebraapi.c
diff --git
a/index/zebraapi.c
b/index/zebraapi.c
index
5f4a9db
..
d536064
100644
(file)
--- a/
index/zebraapi.c
+++ b/
index/zebraapi.c
@@
-1,4
+1,4
@@
-/* $Id: zebraapi.c,v 1.168 2005-05-11 12:39:37 adam Exp $
+/* $Id: zebraapi.c,v 1.175 2005-06-09 10:39:53 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
Copyright (C) 1995-2005
Index Data ApS
@@
-115,6
+115,7
@@
ZebraHandle zebra_open (ZebraService zs)
zh->num_basenames = 0;
zh->basenames = 0;
zh->num_basenames = 0;
zh->basenames = 0;
+ zh->approx_limit = 1000000000;
zh->trans_no = 0;
zh->trans_w_no = 0;
zh->trans_no = 0;
zh->trans_w_no = 0;
@@
-169,11
+170,13
@@
ZebraService zebra_start_res (const char *configName, Res def_res, Res over_res)
log_level_initialized = 1;
}
log_level_initialized = 1;
}
- yaz_log(log_level, "zebra_start %s",configName);
+ yaz_log(YLOG_LOG, "zebra_start %s %s",configName, ZEBRAVER);
assert(configName);
if ((res = res_open (configName, def_res, over_res)))
{
assert(configName);
if ((res = res_open (configName, def_res, over_res)))
{
+ const char *passwd_plain = 0;
+ const char *passwd_encrypt = 0;
ZebraService zh = xmalloc(sizeof(*zh));
yaz_log (YLOG_DEBUG, "Read resources `%s'", configName);
ZebraService zh = xmalloc(sizeof(*zh));
yaz_log (YLOG_DEBUG, "Read resources `%s'", configName);
@@
-185,16
+188,23
@@
ZebraService zebra_start_res (const char *configName, Res def_res, Res over_res)
zebra_chdir (zh);
zebra_mutex_cond_init (&zh->session_lock);
zebra_chdir (zh);
zebra_mutex_cond_init (&zh->session_lock);
- if (!res_get (zh->global_res, "passwd"))
+ passwd_plain = res_get (zh->global_res, "passwd");
+ passwd_encrypt = res_get (zh->global_res, "passwd.c");
+
+ if (!passwd_plain && !passwd_encrypt)
zh->passwd_db = NULL;
else
{
zh->passwd_db = NULL;
else
{
- zh->passwd_db = passwd_db_open ();
+ zh->passwd_db = passwd_db_open();
if (!zh->passwd_db)
yaz_log (YLOG_WARN|YLOG_ERRNO, "passwd_db_open failed");
else
if (!zh->passwd_db)
yaz_log (YLOG_WARN|YLOG_ERRNO, "passwd_db_open failed");
else
- passwd_db_file (zh->passwd_db,
- res_get (zh->global_res, "passwd"));
+ {
+ if (passwd_plain)
+ passwd_db_file_plain(zh->passwd_db, passwd_plain);
+ if (passwd_encrypt)
+ passwd_db_file_crypt(zh->passwd_db, passwd_encrypt);
+ }
}
zh->path_root = res_get (zh->global_res, "root");
zh->nmem = nmem_create();
}
zh->path_root = res_get (zh->global_res, "root");
zh->nmem = nmem_create();
@@
-268,15
+278,27
@@
struct zebra_register *zebra_register_open (ZebraService zs, const char *name,
reg->dh = data1_createx (DATA1_FLAG_XML);
if (!reg->dh)
reg->dh = data1_createx (DATA1_FLAG_XML);
if (!reg->dh)
+ {
+ xfree(reg);
return 0;
return 0;
+ }
reg->bfs = bfs_create (res_get (res, "register"), reg_path);
if (!reg->bfs)
{
data1_destroy(reg->dh);
reg->bfs = bfs_create (res_get (res, "register"), reg_path);
if (!reg->bfs)
{
data1_destroy(reg->dh);
+ xfree(reg);
return 0;
}
if (useshadow)
return 0;
}
if (useshadow)
- bf_cache (reg->bfs, res_get (res, "shadow"));
+ {
+ if (bf_cache (reg->bfs, res_get (res, "shadow")) == ZEBRA_FAIL)
+ {
+ bfs_destroy(reg->bfs);
+ data1_destroy(reg->dh);
+ xfree(reg);
+ return 0;
+ }
+ }
getcwd(cwd, sizeof(cwd)-1);
profilePath = res_get_def(res, "profilePath", DEFAULT_PROFILE_PATH);
getcwd(cwd, sizeof(cwd)-1);
profilePath = res_get_def(res, "profilePath", DEFAULT_PROFILE_PATH);
@@
-843,6
+865,12
@@
ZEBRA_RES zebra_select_databases (ZebraHandle zh, int num_bases,
return ZEBRA_OK;
}
return ZEBRA_OK;
}
+ZEBRA_RES zebra_set_approx_limit(ZebraHandle zh, zint approx_limit)
+{
+ zh->approx_limit = approx_limit;
+ return ZEBRA_OK;
+}
+
ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query,
const char *setname, zint *hits)
{
ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query,
const char *setname, zint *hits)
{
@@
-923,11
+951,18
@@
ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream,
{
char *buf;
int len;
{
char *buf;
int len;
+ zebra_snippets *hit_snippet = zebra_snippets_create();
+
+ zebra_snippets_hit_vector(zh, setname, poset[i].sysno,
+ hit_snippet);
+
recs[i].errCode =
zebra_record_fetch(zh, poset[i].sysno, poset[i].score,
recs[i].errCode =
zebra_record_fetch(zh, poset[i].sysno, poset[i].score,
+ hit_snippet,
stream, input_format, comp,
&recs[i].format, &buf, &len,
&recs[i].base, &recs[i].errString);
stream, input_format, comp,
&recs[i].format, &buf, &len,
&recs[i].base, &recs[i].errString);
+
recs[i].len = len;
if (len > 0)
{
recs[i].len = len;
if (len > 0)
{
@@
-938,6
+973,7
@@
ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream,
recs[i].buf = buf;
recs[i].score = poset[i].score;
recs[i].sysno = poset[i].sysno;
recs[i].buf = buf;
recs[i].score = poset[i].score;
recs[i].sysno = poset[i].sysno;
+ zebra_snippets_destroy(hit_snippet);
}
else
{
}
else
{
@@
-978,11
+1014,11
@@
ZEBRA_RES zebra_scan_PQF(ZebraHandle zh, ODR stream, const char *query,
return res;
}
return res;
}
-ZEBRA_RES zebra_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
- oid_value attributeset,
- int *position,
- int *num_entries, ZebraScanEntry **entries,
- int *is_partial)
+ZEBRA_RES zebra_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
+ oid_value attributeset,
+ int *position,
+ int *num_entries, ZebraScanEntry **entries,
+ int *is_partial)
{
ZEBRA_RES res;
ASSERTZH;
{
ZEBRA_RES res;
ASSERTZH;
@@
-1277,20
+1313,20
@@
static int delete_SU_handle(void *handle, int ord)
return 0;
}
return 0;
}
-ZEBRA_RES zebra_drop_database (ZebraHandle zh, const char *database)
+ZEBRA_RES zebra_drop_database(ZebraHandle zh, const char *db)
{
ZEBRA_RES ret = ZEBRA_OK;
ASSERTZH;
{
ZEBRA_RES ret = ZEBRA_OK;
ASSERTZH;
- yaz_log(log_level, "zebra_drop_database");
+ yaz_log(log_level, "zebra_drop_database %s", db);
zebra_clearError(zh);
zebra_clearError(zh);
- if (zebra_select_database (zh, database) == ZEBRA_FAIL)
+ if (zebra_select_database (zh, db) == ZEBRA_FAIL)
return ZEBRA_FAIL;
if (zebra_begin_trans (zh, 1) == ZEBRA_FAIL)
return ZEBRA_FAIL;
if (zh->reg->isamb)
{
return ZEBRA_FAIL;
if (zebra_begin_trans (zh, 1) == ZEBRA_FAIL)
return ZEBRA_FAIL;
if (zh->reg->isamb)
{
- zebraExplain_curDatabase (zh->reg->zei, database);
+ zebraExplain_curDatabase (zh->reg->zei, db);
zebraExplain_trav_ord(zh->reg->zei, zh, delete_SU_handle);
zebraExplain_removeDatabase(zh->reg->zei, zh);
zebraExplain_trav_ord(zh->reg->zei, zh, delete_SU_handle);
zebraExplain_removeDatabase(zh->reg->zei, zh);
@@
-1304,24
+1340,24
@@
ZEBRA_RES zebra_drop_database (ZebraHandle zh, const char *database)
return ret;
}
return ret;
}
-ZEBRA_RES zebra_create_database (ZebraHandle zh, const char *database)
+ZEBRA_RES zebra_create_database (ZebraHandle zh, const char *db)
{
ASSERTZH;
{
ASSERTZH;
- yaz_log(log_level, "zebra_create_database %s", database);
- assert(database);
+ yaz_log(log_level, "zebra_create_database %s", db);
+ assert(db);
zebra_clearError(zh);
zebra_clearError(zh);
- if (zebra_select_database (zh, database) == ZEBRA_FAIL)
+ if (zebra_select_database (zh, db) == ZEBRA_FAIL)
return ZEBRA_FAIL;
if (zebra_begin_trans (zh, 1))
return ZEBRA_FAIL;
/* announce database */
return ZEBRA_FAIL;
if (zebra_begin_trans (zh, 1))
return ZEBRA_FAIL;
/* announce database */
- if (zebraExplain_newDatabase (zh->reg->zei, database, 0
+ if (zebraExplain_newDatabase (zh->reg->zei, db, 0
/* explainDatabase */))
{
zebra_end_trans (zh);
/* explainDatabase */))
{
zebra_end_trans (zh);
- zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED, database);
+ zebra_setError(zh, YAZ_BIB1_ES_IMMEDIATE_EXECUTION_FAILED, db);
return ZEBRA_FAIL;
}
return zebra_end_trans (zh);
return ZEBRA_FAIL;
}
return zebra_end_trans (zh);
@@
-2116,9
+2152,9
@@
ZEBRA_RES zebra_delete_record (ZebraHandle zh,
*/
ZEBRA_RES zebra_search_PQF(ZebraHandle zh, const char *pqf_query,
*/
ZEBRA_RES zebra_search_PQF(ZebraHandle zh, const char *pqf_query,
- const char *setname, zint *numhits)
+ const char *setname, zint *hits)
{
{
- zint hits = 0;
+ zint lhits = 0;
ZEBRA_RES res = ZEBRA_OK;
Z_RPNQuery *query;
ODR odr = odr_createmem(ODR_ENCODE);
ZEBRA_RES res = ZEBRA_OK;
Z_RPNQuery *query;
ODR odr = odr_createmem(ODR_ENCODE);
@@
-2137,14
+2173,14
@@
ZEBRA_RES zebra_search_PQF(ZebraHandle zh, const char *pqf_query,
res = ZEBRA_FAIL;
}
else
res = ZEBRA_FAIL;
}
else
- res = zebra_search_RPN(zh, odr, query, setname, &hits);
+ res = zebra_search_RPN(zh, odr, query, setname, &lhits);
odr_destroy(odr);
odr_destroy(odr);
- yaz_log(log_level, "Hits: " ZINT_FORMAT, hits);
+ yaz_log(log_level, "Hits: " ZINT_FORMAT, lhits);
- if (numhits)
- *numhits = hits;
+ if (hits)
+ *hits = lhits;
return res;
}
return res;
}