Search Scripted Post-processors form

  • Release version: Washingtondc
  • Updated August 5, 2024
  • 2 minutes to read
  • Summarize
    Summarized using AI
    This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.

    Summary of Search Scripted Post-processors

    The Search Scripted Post-processors form is utilized for managing post-processing scripts within AI Search application configurations in ServiceNow. It is essential for creating or modifying these scripts, which enhance search result presentation and functionality.

    Show full answer Show less

    Key Features

    • Active: Option to activate the search script post-processor.
    • Name: Identifies the search script post-processor.
    • Application: Automatically set application scope for the script.
    • Type: Defines the record type the post-processor operates on, such as 'Genius Result' or 'Search Result.'
    • Post processing script: Server-side function that modifies record objects in search results, enabling a more user-friendly display.

    Key Outcomes

    By effectively utilizing search scripted post-processors, ServiceNow customers can manipulate search results, such as converting date fields into more understandable formats. This functionality significantly improves user experience by making data more accessible and relatable.

    Additionally, customers can access existing scripts for reference, facilitating the creation of custom post-processing scripts tailored to their needs.

    The Search Scripted Post-processors form contains information about post-processing scripts defined in search application configurations for AI Search. Use this form when creating or modifying search scripted post-processors.

    For details on creating or editing search scripted post-processors, see Using search scripted post-processors in AI Search application configurations.

    Table 1. Search Scripted Post-processors form
    Field Description
    Active Option to activate the search script post-processor.
    Name Name for the search script post-processor.
    Application Application scope for the search script post-processor. This field is automatically set.
    Type

    Type of record the search script post-processor operates on.

    Valid values:
    • Genius Result: Script operates on a Genius Result answer record.
    • Search Result: Script operates on a search result record.
    Post processing script

    Server-side script function that takes a record object as its parameter. When the search scripted post-processor is linked to a search application configuration, search results reflect changes made to the record object in this script function.

    As an example, this post-processing script function operates on search results from the kb_knowledge table, transforming sys_updated_on date field values into a human-readable format:
    function process(record) {
    
        var transformableTables = ['kb_knowledge'];
        var transformableDateFields = ['sys_updated_on'];
    
        var table = record.getTable();
    
        // Terminate early if possible, to avoid unnecessary overhead
        if (transformableTables.indexOf(table) === -1)
            return;
    
        function transformToHumanFriendlyDate(rawDate) {
            // Time gaps in ms
            var MINUTE_GAP = 60000;
            var HOUR_GAP = 3600000;
            var DAY_GAP = 86400000;
            var WEEK_GAP = 604800000;
            var MONTH_GAP = 2592000000;
            var YEAR_GAP = 31536000000;
    
            var gap = new Date().getTime() - rawDate;
            if (gap < MINUTE_GAP) {
                return gs.getMessage('Just Now');
            } else if (gap > MINUTE_GAP && gap < 2 * MINUTE_GAP) {
                return gs.getMessage('1 minute ago');
            } else if (gap < HOUR_GAP) {
                return gs.getMessage('{0} minutes ago', '' + Math.floor(gap / MINUTE_GAP));
            } else if (gap > HOUR_GAP && gap < 2 * HOUR_GAP) {
                return gs.getMessage('1 hour ago');
            } else if (gap < DAY_GAP) {
                return gs.getMessage('{0} hours ago', '' + Math.floor(gap / HOUR_GAP));
            } else if (gap > DAY_GAP && gap < 2 * DAY_GAP) {
                return gs.getMessage('1 day ago');
            } else if (gap < WEEK_GAP) {
                return gs.getMessage('{0} days ago', '' + Math.floor(gap / DAY_GAP));
            } else if (gap > WEEK_GAP && gap < 2 * WEEK_GAP) {
                return gs.getMessage('1 week ago');
            } else if (gap < MONTH_GAP) {
                return gs.getMessage('{0} weeks ago', '' + Math.floor(gap / WEEK_GAP));
            } else if (gap > MONTH_GAP && gap < 2 * MONTH_GAP) {
                return gs.getMessage('1 month ago');
            } else if (gap < YEAR_GAP) {
                return gs.getMessage('{0} months ago', '' + Math.floor(gap / MONTH_GAP));
            } else if (gap > YEAR_GAP && gap < 2 * YEAR_GAP) {
                return gs.getMessage('1 year ago');
            } else {
                return gs.getMessage('{0} years ago', '' + Math.floor(gap / YEAR_GAP));
            }
        }
    
        for (var i = 0; i < transformableDateFields.length; i++) {
            var fieldName = transformableDateFields[i];
            var updatedDateField = record.getField(fieldName);
            if (updatedDateField !== null) {
                var updatedDateRaw = updatedDateField.getValue();
                if (updatedDateRaw != null) {
                    var humanFriendlyDate = transformToHumanFriendlyDate(updatedDateRaw);
                    updatedDateField.setDisplayValue(humanFriendlyDate);
                }
            }
        }
    }
    Note:
    The UI displays an overview of API methods usable in the post-processing script function.
    You can copy code from an existing post-processor script to use as a starting point for your own script function. To access existing post-processor scripts, open the Search Scripted Post-processors [sys_search_scripted_processor] table in list view by following these steps:
    1. Select All.
    2. In the Filter field, enter sys_search_scripted_processor.list.
    3. Press Enter.