Search Scripted Post-processors form

  • Release version: Australia
  • Updated March 12, 2026
  • 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 form

    The Search Scripted Post-processors form in ServiceNow allows you to create and manage search scripted post-processors within AI Search application configurations. These post-processors enable custom server-side scripting to modify search result records after they are retrieved, enhancing the search experience by transforming or enriching data before display.

    Show full answer Show less

    Key Features

    • Activation Control: You can activate or deactivate each scripted post-processor using the Active option.
    • Identification: Each post-processor has a Name and is associated with an Application scope, which is automatically set.
    • Type Specification: Specify the type of records the script will operate on, either Genius Result records or Search Result records.
    • Post-processing Script: Define a server-side JavaScript function that takes a record object parameter and modifies it as needed. For example, you can transform date fields into human-readable formats within search results.
    • API Methods Overview: The UI provides an overview of API methods available for use in the script, aiding in script development.
    • Reusable Scripts: You can leverage existing post-processor scripts as templates by accessing them through the syssearchscriptedprocessor table in list view.

    Practical Application

    By using search scripted post-processors, ServiceNow customers can tailor search result data presentation dynamically. For instance, converting technical date/time fields into user-friendly phrases like "2 hours ago" improves readability and user engagement. This customization ensures that AI Search results are more relevant and easier to interpret, enhancing the overall search experience in your ServiceNow environment.

    How to Access Existing Post-processors

    To find and reuse existing search scripted post-processor scripts:

    • Navigate to the "All" applications.
    • Enter syssearchscriptedprocessor.list in the Filter navigator and press Enter.
    • This brings up the list view of all scripted post-processors for review and copying.

    The Search Scripted Post-processors form enables you to create a search scripted post-processor in the search application configuration for an AI Search application.

    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.