Merge branch 'solr_facets' of ssh://git.indexdata.com/home/git/pub/yaz into solr_facets
authorDennis Schafroth <dennis@indexdata.com>
Thu, 26 Aug 2010 13:31:35 +0000 (15:31 +0200)
committerDennis Schafroth <dennis@indexdata.com>
Thu, 26 Aug 2010 13:31:35 +0000 (15:31 +0200)
client/client.c
src/solr.c

index 0227085..3086afe 100644 (file)
@@ -2281,6 +2281,22 @@ static int only_z3950(void)
     return 0;
 }
 
+static int is_SRW(void)
+{
+    if (!conn)
+    {
+        printf("Not connected yet\n");
+        return 1;
+    }
+    if (protocol == PROTO_HTTP && yaz_matchstr(sru_method, "solr"))
+    {
+        printf("Not supported by SRW\n");
+        return 1;
+    }
+    return 0;
+}
+
+
 static int cmd_update_common(const char *arg, int version);
 
 static int cmd_update(const char *arg)
index 51f3074..7a13940 100644 (file)
@@ -202,19 +202,18 @@ int yaz_solr_decode_response(ODR o, Z_HTTP_Response *hres, Z_SRW_PDU **pdup)
         }
         else
         {
-            /** look for result node */
+            /** look for result (required) and facets node (optional) */
+            int rc_result = -1;
+            int rc_facets = 0;
             for (ptr = root->children; ptr; ptr = ptr->next)
             {
                 if (ptr->type == XML_ELEMENT_NODE &&
                     !strcmp((const char *) ptr->name, "result"))
-                        yaz_solr_decode_result(o, ptr, sr);
+                        rc_result = yaz_solr_decode_result(o, ptr, sr);
                 if (match_xml_node_attribute(ptr, "lst", "name", "facet_counts"))
-                        yaz_solr_decode_facet_counts(o, ptr, sr);
-            }
-            if (!ptr)
-            {
-                ret = -1;
+                    rc_facets =  yaz_solr_decode_facet_counts(o, ptr, sr);
             }
+            ret = rc_result + rc_facets;
         }
     }
     if (doc)