def getJson(self, state = "open"): title = "%s (%s)" % (self.getName(), self.getCount()) json = JsonConfigHelper() json.set("attributes/id", self.getId()) json.set("attributes/fq", self.getFacetQuery()) json.set("attributes/title", title) json.set("data", title) hasSubFacets = not self.getSubFacets().isEmpty() if hasSubFacets: json.set("state", state) subFacetList = ArrayList() for subFacet in self.getSubFacets(): subFacetList.add(subFacet.getJson("closed")) json.setJsonList("children", subFacetList) return json
def __getSolrData(self): prefix = self.getSearchTerms() print "prefix='%s'" % prefix if prefix: query = "dc_title:%(prefix)s OR dc_title:%(prefix)s*" % {"prefix": prefix} query += " OR f_dc_identifier:%(ns)s%(prefix)s OR f_dc_identifier:%(ns)s%(prefix)s*" % { "prefix": prefix, "ns": "http\://example.com/arc/", } else: query = "*:*" portal = self.services.portalManager.get(self.portalId) if portal.searchQuery != "*:*" and portal.searchQuery != "": query = query + " AND " + portal.searchQuery req = SearchRequest(query) req.setParam("fq", 'item_type:"object"') if portal.query: req.addParam("fq", portal.query) req.setParam("fl", "score") req.setParam("sort", "score desc") req.setParam("start", self.getStartIndex()) req.setParam("rows", self.getItemsPerPage()) req.setParam("facet", "true") req.setParam("facet.field", "repository_name") req.setParam("facet.mincount", "1") ns = self.getNamespace() level = self.getFormData("level", None) if level and level != "top": req.addParam("fq", 'repository_name:"%s"' % level.replace(ns, "")) try: out = ByteArrayOutputStream() indexer = self.services.getIndexer() indexer.search(req, out) results = JsonConfigHelper(ByteArrayInputStream(out.toByteArray())) if level == "top": narrowerMap = {} for doc in results.getJsonList("response/docs"): value = doc.getList("repository_name").get(0) hash = md5.md5(value).hexdigest() if not narrowerMap.has_key(hash): # print value, hash narrowerMap[hash] = [] narrowerMap[hash].append(doc.get("id")) docs = ArrayList() facets = results.getList("facet_counts/facet_fields/repository_name") for i in range(0, len(facets), 2): value = facets[i] hash = md5.md5(value).hexdigest() # print value,hash doc = JsonConfigHelper() doc.set("score", "1") doc.set("dc_identifier", "%s%s" % (ns, value)) doc.set("skos_inScheme", ns) doc.set("skos_broader", "%s%s" % (ns, value)) doc.set("skos_narrower", '", "'.join(narrowerMap[hash])) doc.set("skos_prefLabel", value) docs.add(doc) results.removePath("response/docs") results.setJsonList("response/docs", docs) return results except Exception, e: self.log.error("Failed to lookup '{}': {}", prefix, str(e))