Zebra uses string attributes for indexing internally. Using set+numeric
[idzebra-moved-to-github.git] / index / zinfo.c
index 05b772a..3d2aee8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zinfo.c,v 1.61 2006-05-10 13:46:55 adam Exp $
+/* $Id: zinfo.c,v 1.64 2006-05-19 13:49:34 adam Exp $
    Copyright (C) 1995-2006
    Index Data ApS
 
@@ -1438,8 +1438,13 @@ int zebraExplain_lookup_attr_su_any_index(ZebraExplainInfo zei,
                                          int set, int use)
 {
     struct zebSUInfoB *zsui;
+    int ord;
 
     assert (zei->curDatabaseInfo);
+
+    ord = zebraExplain_lookup_attr_su(zei, 'w', set, use);
+    if (ord != -1)
+        return ord;
     for (zsui = zei->curDatabaseInfo->attributeDetails->SUInfo;
         zsui; zsui=zsui->next)
         if (zsui->info.which == ZEB_SU_SET_USE &&
@@ -1486,7 +1491,7 @@ int zebraExplain_lookup_attr_str(ZebraExplainInfo zei, int index_type,
         *zsui; zsui = &(*zsui)->next)
         if ((*zsui)->info.index_type == index_type
             && (*zsui)->info.which == ZEB_SU_STR 
-            && !strcmp((*zsui)->info.u.str, str))
+            && !yaz_matchstr((*zsui)->info.u.str, str))
         {
             struct zebSUInfoB *zsui_this = *zsui;
 
@@ -1577,6 +1582,22 @@ int zebraExplain_ord_get_occurrences(ZebraExplainInfo zei, int ord,
     return -1;
 }
 
+zint zebraExplain_ord_get_doc_occurrences(ZebraExplainInfo zei, int ord)
+{
+    struct zebSUInfoB *zsui = zebraExplain_get_sui_info(zei, ord, 0, 0);
+    if (zsui)
+        return zsui->info.doc_occurrences;
+    return 0;
+}
+
+zint zebraExplain_ord_get_term_occurrences(ZebraExplainInfo zei, int ord)
+{
+    struct zebSUInfoB *zsui = zebraExplain_get_sui_info(zei, ord, 0, 0);
+    if (zsui)
+        return zsui->info.term_occurrences;
+    return 0;
+}
+
 int zebraExplain_lookup_ord(ZebraExplainInfo zei, int ord,
                            int *index_type, 
                            const char **db,
@@ -1679,6 +1700,7 @@ int zebraExplain_add_attr_su(ZebraExplainInfo zei, int index_type,
 {
     struct zebSUInfoB *zsui = zebraExplain_add_sui_info(zei, index_type);
 
+    yaz_log(YLOG_WARN, "add_attr_su");
     zebraExplain_addAttributeSet (zei, set);
     zsui->info.which = ZEB_SU_SET_USE;
     zsui->info.u.su.set = set;