const marcQuery = new BoolQuery();
const tag = ms.tags[idx];
const subfield = ms.subfields[idx];
+
+ /*
+ * Un-comment this if supporting match ops for marc searches.
const matchOp = ms.matchOp[idx];
this.appendMatchOp(
marcQuery, matchOp, 'marc.value.text*', 'marc.value', value);
+ */
if (tag) {
marcQuery.must(new TermQuery('marc.tag', tag));
return;
}
}
+
+ formatFacets(facets: any) {
+ const facetData = {};
+ Object.keys(facets).forEach(ebfId => {
+ const facetHash = facets[ebfId];
+
+ const ebfData = [];
+ Object.keys(facetHash).forEach(value => {
+ const count = facetHash[value];
+ ebfData.push({value : value, count : count});
+ });
+
+ const parts = ebfId.split('|');
+ const fclass = parts[0];
+ const fname = parts[1];
+
+ if (!facetData[fclass]) { facetData[fclass] = {}; }
+
+ facetData[fclass][fname] = {
+ // 'cmfLabel' is what the higher-level code seeks
+ cmfLabel : ebfId, // TODO
+ valueList : ebfData.sort((a, b) => {
+ if (a.count > b.count) { return -1; }
+ if (a.count < b.count) { return 1; }
+ return a.value < b.value ? -1 : 1;
+ })
+ };
+ });
+
+ return facetData;
+ }
}