GETTING STARTED
SearchAssist Overview
SearchAssist Introduction
Onboarding SearchAssist
Build your first App
Glossary
Release Notes
What's new in SearchAssist
Previous Versions

CONCEPTS
Managing Sources
Introduction
Files
Web Pages
FAQs
Structured Data 
Connectors
Introduction to Connectors
Azure Storage Connector
Confluence Cloud Connector
Confluence Server Connector
Custom Connector
DotCMS Connector
Dropbox Connector
Google Drive Connector
Oracle Knowledge Connector
Salesforce Connector
ServiceNow Connector
SharePoint Connector
Zendesk Connector
RACL
Virtual Assistants
Managing Indices
Introduction
Index Fields
Traits
Workbench
Introduction to Workbench
Field Mapping
Entity Extraction
Traits Extraction
Keyword Extraction
Exclude Document
Semantic Meaning
Snippet Extraction
Custom LLM Prompts
Index Settings
Index Languages
Managing Chunks
Chunk Browser
Managing Relevance
Introduction
Weights
Highlighting
Presentable
Synonyms
Stop Words
Search Relevance
Spell Correction
Prefix Search
Custom Configurations
Personalizing Results
Introduction
Answer Snippets
Introduction
Extractive Model
Generative Model
Enabling Both Models
Simulation and Testing
Debugging
Best Practices and Points to Remember
Troubleshooting Answers
Answer Snippets Support Across Content Sources
Result Ranking
Facets
Business Rules
Introduction
Contextual Rules
NLP Rules
Engagement
Small Talk
Bot Actions
Designing Search Experience
Introduction
Search Interface
Result Templates
Testing
Preview and Test
Debug Tool
Running Experiments
Introduction
Experiments
Analyzing Search Performance
Overview
Dashboard
User Engagement
Search Insights
Result Insights
Answer Insights

ADMINISTRATION
General Settings
Credentials
Channels
Team
Collaboration
Integrations
OpenAI Integration
Azure OpenAI Integration
Custom Integration
Billing and Usage
Plan Details
Usage Logs
Order and Invoices
Smart Hibernation

SearchAssist APIs
API Introduction
API List

SearchAssist SDK

HOW TOs
Use Custom Fields to Filter Search Results and Answers
Add Custom Metadata to Ingested Content
Write Painless Scripts
Configure Business Rules for Generative Answers

Custom Script

The Custom Script stage in Index Pipeline allows for custom processing. You can write a painless script to perform actions such as adding a new field, deleting a field, setting/resetting values to a field, coping fields, etc.

Ensure to Train your app each time you make changes to any index configuration. This builds the index based on the updated configurations.

Configuration

To configure a custom script, follow the below steps:

  1. Click the Indices tab on the top.
  2. On the left pane, under the Index Configuration section, click Workbench.
  3. On the Workbench (Index Configuration) page, on the Stages column, click the + icon.
  4. On the right column, select Custom Script from the Stage Type drop-down list.
  5. Enter a name in the Stage Name field.
  6. Enter a condition in the Condition field.  You can add multiple conditions using the AND/OR connectors. Documents that satisfy the condition will be executed as part of the stage. See below for details.
  7. Under the </>Painless section, enter the custom script. See below for details.
  8. Click Simulate to verify the configurations. The simulator displays the Source and the number of documents to which the mapping was applied, and the result. You can change the Source (if not mentioned in the condition) and the number of documents.
  9. Once done, click Save Configuration on the top-right.

Script

Example

To copy a value from “defaultAnswers[*].payload” to “answer[]”, use the below script:

ctx.answer =[]; for (def item : ctx.defaultAnswers) { ctx.answer.add(item.payload) }

Conditions

Condition is of the following format: ctx.fieldtype==value or ctx.fieldtype!=value. The field_name can be obtained from the Fields table under Index Configuration.

For example, ctx.contentType=="web" to restrict the extraction to the content from a web source.

Custom Script

The Custom Script stage in Index Pipeline allows for custom processing. You can write a painless script to perform actions such as adding a new field, deleting a field, setting/resetting values to a field, coping fields, etc.

Ensure to Train your app each time you make changes to any index configuration. This builds the index based on the updated configurations.

Configuration

To configure a custom script, follow the below steps:

  1. Click the Indices tab on the top.
  2. On the left pane, under the Index Configuration section, click Workbench.
  3. On the Workbench (Index Configuration) page, on the Stages column, click the + icon.
  4. On the right column, select Custom Script from the Stage Type drop-down list.
  5. Enter a name in the Stage Name field.
  6. Enter a condition in the Condition field.  You can add multiple conditions using the AND/OR connectors. Documents that satisfy the condition will be executed as part of the stage. See below for details.
  7. Under the </>Painless section, enter the custom script. See below for details.
  8. Click Simulate to verify the configurations. The simulator displays the Source and the number of documents to which the mapping was applied, and the result. You can change the Source (if not mentioned in the condition) and the number of documents.
  9. Once done, click Save Configuration on the top-right.

Script

Example

To copy a value from “defaultAnswers[*].payload” to “answer[]”, use the below script:

ctx.answer =[]; for (def item : ctx.defaultAnswers) { ctx.answer.add(item.payload) }

Conditions

Condition is of the following format: ctx.fieldtype==value or ctx.fieldtype!=value. The field_name can be obtained from the Fields table under Index Configuration.

For example, ctx.contentType=="web" to restrict the extraction to the content from a web source.