Generates a multi-choice or single-choice facets object for an advanced search source.

The SPScriptedFacetService API can only be used in a facet generation script in a Service Portal search source. The facet generation script is only visible when Is scripted source is selected.

There is no constructor for this class. Instead, use the createFacet() or createMultiChoiceFacet() methods to generate a facets object.

SPScriptedFacetService - createFacet(String label, String id)

Creates a single choice facets object.

After creating the facets object, add facet items or mapped queries to the facet using the addFacetItem() method of the SPScriptedFacet class.

Table 1. Parameters
Name Type Description
label String Label for the facet.
id String ID for the facet.
Table 2. Returns
Type Description
Object Single choice facets object. Returns an error when:
  • A duplicate label or ID is found.
  • A label or ID is not defined.

Example

Can only be used in a facet generation script in a Service Portal advanced search source.

var stateFacet = facetService.createFacet("State", "state");

SPScriptedFacetService - createMultiChoiceFacet(String label, String id)

Creates a multi choice facets object.

After creating the facets object, add facet items or mapped queries to the facet using the addFacetItem() method of the SPScriptedFacet class.

Table 3. Parameters
Name Type Description
label String Label for the facet.
id String ID for the facet.
Table 4. Returns
Type Description
Object Multi choice facets object.

Returns an error when:

  • A duplicate label or ID is found.
  • A label or ID is not defined.

Example

function createMultiChoiceFacetFromKB(label, variable, values, orderBy){
  if(!values || values.length == 0)
    return;

  var kbFacet = facetService.createMultiChoiceFacet(label, variable);
  var kbMap = {};
  for(var i in values) {
    var key = values[i].label;
    var value = values[i].id;
    var parent = new KBParentData().getParentCategory(value, key);
    key = parent.join(' > ');
    kbMap[key] = value;
  }

  var labels = Object.keys(kbMap).sort();
  for (i = 0; i < labels.length; i++) {
    var currentLabel = labels[i];
    kbFacet.addFacetItem(currentLabel, kbMap[currentLabel]);
    //adds facet search options for each kbMap entry
  }
}