-/* $Id: zsets.c,v 1.102 2006-05-18 12:03:05 adam Exp $
+/* $Id: zsets.c,v 1.104 2006-05-19 23:20:24 adam Exp $
Copyright (C) 1995-2006
Index Data ApS
struct zebra_set_term_entry {
int reg_type;
char *db;
- int set;
- int use;
+ char *index_name;
char *term;
};
return res;
}
-void resultSetAddTerm (ZebraHandle zh, ZebraSet s, int reg_type,
- const char *db, int set,
- int use, const char *term)
+void resultSetAddTerm(ZebraHandle zh, ZebraSet s, int reg_type,
+ const char *db, const char *index_name,
+ const char *term)
{
assert(zh); /* compiler shut up */
if (!s->nmem)
{
s->term_entries[s->hits].reg_type = reg_type;
s->term_entries[s->hits].db = nmem_strdup (s->nmem, db);
- s->term_entries[s->hits].set = set;
- s->term_entries[s->hits].use = use;
- s->term_entries[s->hits].term = nmem_strdup (s->nmem, term);
+ s->term_entries[s->hits].index_name = nmem_strdup(s->nmem, index_name);
+ s->term_entries[s->hits].term = nmem_strdup(s->nmem, term);
}
(s->hits)++;
}
if (zh->m_staticrank)
sysno_mem_index = 1;
-
assert(nmem); /* compiler shut up about unused param */
sset->sort_info->num_entries = 0;
case Z_SortKey_sortField:
yaz_log(log_level_sort, "key %d is of type sortField",
i+1);
- zebra_setError(zh, YAZ_BIB1_CANNOT_SORT_ACCORDING_TO_SEQUENCE, 0);
- return ZEBRA_FAIL;
+ sort_criteria[i].numerical = 0;
+ sort_criteria[i].ord =
+ zebraExplain_lookup_attr_str(zh->reg->zei, 's',
+ sk->u.sortField);
+ if (sort_criteria[i].ord == -1)
+ {
+ zebra_setError(zh,
+ YAZ_BIB1_CANNOT_SORT_ACCORDING_TO_SEQUENCE, 0);
+ return ZEBRA_FAIL;
+ }
+ break;
case Z_SortKey_elementSpec:
yaz_log(log_level_sort, "key %d is of type elementSpec",
i+1);
return ZEBRA_FAIL;
case Z_SortKey_sortAttributes:
yaz_log(log_level_sort, "key %d is of type sortAttributes", i+1);
- if (1)
- {
- int ord;
- int use = zebra_maps_sort(zh->reg->zebra_maps,
- sk->u.sortAttributes,
- &sort_criteria[i].numerical);
- yaz_log(log_level_sort, "use value = %d", use);
- if (use == -1)
- {
- zebra_setError(
- zh, YAZ_BIB1_USE_ATTRIBUTE_REQUIRED_BUT_NOT_SUPPLIED, 0);
- return ZEBRA_FAIL;
- }
- ord = zebraExplain_lookup_attr_su_any_index(zh->reg->zei,
- VAL_IDXPATH, use);
- if (ord == -1)
- {
- zebra_setError(
- zh, YAZ_BIB1_CANNOT_SORT_ACCORDING_TO_SEQUENCE, 0);
- return ZEBRA_FAIL;
- }
- sort_criteria[i].ord = ord;
- }
+ if (zebra_sort_get_ord(zh, sk->u.sortAttributes,
+ &sort_criteria[i].ord,
+ &sort_criteria[i].numerical)
+ != ZEBRA_OK)
+ return ZEBRA_FAIL;
break;
}
}