Work-around for bogus SOLR facets when zero hits
authorDennis Schafroth <dennis@indexdata.com>
Thu, 9 Sep 2010 14:15:10 +0000 (16:15 +0200)
committerDennis Schafroth <dennis@indexdata.com>
Thu, 9 Sep 2010 14:15:10 +0000 (16:15 +0200)
src/solr.c

index 0a5ca40..4ce820c 100644 (file)
@@ -255,7 +255,9 @@ int yaz_solr_decode_response(ODR o, Z_HTTP_Response *hres, Z_SRW_PDU **pdup)
                 if (ptr->type == XML_ELEMENT_NODE &&
                     !strcmp((const char *) ptr->name, "result"))
                         rc_result = yaz_solr_decode_result(o, ptr, sr);
                 if (ptr->type == XML_ELEMENT_NODE &&
                     !strcmp((const char *) ptr->name, "result"))
                         rc_result = yaz_solr_decode_result(o, ptr, sr);
-                if (match_xml_node_attribute(ptr, "lst", "name", "facet_counts"))
+                /* TODO The check on hits is a work-around to avoid garbled facets on zero results from the SOLR server.
+                 * The work-around works because the results is before the facets in the xml. */
+                if (rc_result == 0 && match_xml_node_attribute(ptr, "lst", "name", "facet_counts"))
                     rc_facets =  yaz_solr_decode_facet_counts(o, ptr, sr);
             }
             ret = rc_result + rc_facets;
                     rc_facets =  yaz_solr_decode_facet_counts(o, ptr, sr);
             }
             ret = rc_result + rc_facets;