* Sebastian Hammer, Adam Dickmeiss
*
* $Log: rsbool.c,v $
- * Revision 1.3 1995-09-07 13:58:43 adam
+ * Revision 1.6 1995-10-06 14:38:05 adam
+ * New result set method: r_score.
+ * Local no (sysno) and score is transferred to retrieveCtrl.
+ *
+ * Revision 1.5 1995/09/08 14:52:41 adam
+ * Work on relevance feedback.
+ *
+ * Revision 1.4 1995/09/08 08:54:04 adam
+ * More efficient and operation.
+ *
+ * Revision 1.3 1995/09/07 13:58:43 adam
* New parameter: result-set file descriptor (RSFD) to support multiple
* positions within the same result-set.
* Boolean operators: and, or, not implemented.
static int r_read_or (RSFD rfd, void *buf);
static int r_read_not (RSFD rfd, void *buf);
static int r_write (RSFD rfd, const void *buf);
+static int r_score (RSFD rfd, int *score);
static const rset_control control_and =
{
r_rewind,
r_count,
r_read_and,
- r_write
+ r_write,
+ r_score
};
static const rset_control control_or =
r_rewind,
r_count,
r_read_or,
- r_write
+ r_write,
+ r_score
};
static const rset_control control_not =
r_rewind,
r_count,
r_read_not,
- r_write
+ r_write,
+ r_score
};
rset_bool_parms *bool_parms = parms;
struct rset_bool_info *info;
- logf (LOG_DEBUG, "rsbool_create(%s)", sel->desc);
newct = xmalloc(sizeof(*newct));
memcpy (newct, sel, sizeof(*sel));
newct->buf = xmalloc (sizeof(struct rset_bool_info));
struct rset_bool_rfd *p = rfd;
struct rset_bool_info *info = p->info;
- while (p->more_l || p->more_r)
+ while (p->more_l && p->more_r)
{
int cmp;
- if (p->more_l && p->more_r)
- cmp = (*info->cmp)(p->buf_l, p->buf_r);
- else if (p->more_r)
- cmp = 2;
- else
- cmp = -2;
+ cmp = (*info->cmp)(p->buf_l, p->buf_r);
if (!cmp)
{
memcpy (buf, p->buf_l, info->key_size);
logf (LOG_FATAL, "bool set type is read-only");
return -1;
}
+
+static int r_score (RSFD rfd, int *score)
+{
+ *score = -1;
+ return -1;
+}
+