def fromTerm(term): terms = [convert.pipe2value(t) for t in convert.pipe2value(term).split("|")] candidate = dict(zip(jx_fields, terms)) for p in domain.partitions: for k, t in candidate.items(): if p.value[k] != t: break else: return p if domain.type in ["uid", "default"]: part = {"value": candidate} domain.partitions.append(part) return part else: return Null
def unpack_terms(facet, selects): # INTERPRET THE TERM-PACKED ES RESULTS AND RETURN DATA CUBE # ASSUME THE .term IS JSON OBJECT WITH ARRAY OF RESULT OBJECTS mod = len(selects) output = [] for t in facet.terms: if t.term == "": continue # NO DATA value = [] for i, v in enumerate(t.term.split("|")): value.append(convert.pipe2value(v)) if ((i + 1) % mod) == 0: value.append(t.count) output.append(value) value = [] return output