Product Selector

Fusion 5.12
    Fusion 5.12

    Machine LearningQuery pipeline stage configuration specifications

    Table of Contents

    The Machine Learning query pipeline stage uses a trained machine learning model to analyze a field or fields of a Request object and stores the results of analysis in a new field added to either the Request or the Context object.

    In order to use the Machine Learning Stage, you must train a machine learning model. There are two different ways to train a model:

    • Use a Managed Fusion job that trains a model, like

    This stage requires that you use JavaScript to construct a model input object from the Request and/or Context. This JavaScript is defined in the "Model input transformation script" property. This script must construct a HashMap containing fields and values to be sent to the model. The field names and values will depend on the input schema of the model.

    Value types supported are:

    • String

    • Double

    • String[]

    • double[]

    • List<String>

    • List<Number>

    The JavaScript interpreter that executes the script will have the following variables available in scope:

    The last line of the script must be a reference to the HashMap object you created.

    Example 1: Single string parameter from request to modelInput HashMap

    var modelInput = new java.util.HashMap()
    modelInput.put("input_1", request.getFirstParam("q"))
    modelInput

    Example 2: List of strings from request to modelInput HashMap

    var modelInput = new java.util.HashMap()
    modelInput.put("input_1", request.getParam("q")) // request.getParam returns a Collection
    modelInput

    Example 3: List of numeric values from request to modelInput HashMap

    var modelInput = new java.util.HashMap()
    var list = new java.util.ArrayList()
    list.add(Double.parseDouble(request.getFirstParam("numeric_1")))
    list.add(Double.parseDouble(request.getFirstParam("numeric_2")))
    modelInput.put("input_1", list)
    modelInput

    Similarly, you will need to use JavaScript to store the predictions into the Request and/or Context from the model output object. The model output object is a HashMap containing fields and values produced by the model.

    The JavaScript interpreter that executes the script will have the following variables available in scope:

    Example: Place predictedLabel (string) on request

    request.putSingleParam("sentiment", modelOutput.get("predictedLabel"))

    Lucidworks offers free training to help you get started with Fusion. Check out the Intro to Machine Learning in Fusion course, which focuses on using machine learning to to infer the goals of customers and users in order to deliver a more sophisticated search experience:

    Intro to Machine Learning in Fusion

    Visit the LucidAcademy to see the full training catalog.

    Generate predictions from a machine learning model

    skip - boolean

    Set to true to skip this stage.

    Default: false

    label - string

    A unique label for this stage.

    <= 255 characters

    condition - string

    Define a conditional script that must result in true or false. This can be used to determine if the stage should process or not.

    modelId - stringrequired

    Model ID

    contextKey - string

    Name of context key to store prediction

    failOnError - boolean

    Flag to indicate if this stage should throw an exception if an error occurs while generating a prediction for a document.

    Default: false

    inputScript - stringrequired

    Javascript code that returns a HashMap contains fields and values to send to ML model service. Refer to examples.

    Default: /* This script must contruct a HashMap containing fields and values to be sent to the ML model service. The field names and values will depend on the input schema of the model. Generally, you'll be reading fields and values from the request/context/response and placing them into a HashMap. Value types supported are: - String - Double - String[] - double[] - List<String> - List<Number> This script receives these objects and can be referenced in your script: - request - response - context - log (Logger useful for debugging) The last line of the script must be a reference to the HashMap object you created. Example 1: Single string parameter from request to modelInput HashMap var modelInput = new java.util.HashMap() modelInput.put("input_1", request.getFirstParam("q")) modelInput Example 2: List of strings from request to modelInput HashMap var modelInput = new java.util.HashMap() modelInput.put("input_1", request.getParam("q")) // request.getParam returns a Collection modelInput Example 3: List of numeric values from request to modelInput HashMap var modelInput = new java.util.HashMap() var list = new java.util.ArrayList() list.add(Double.parseDouble(request.getFirstParam("numeric_1"))) list.add(Double.parseDouble(request.getFirstParam("numeric_2"))) modelInput.put("input_1", list) modelInput Example 4: To use the spark ml based models, use the below code var modelInput = new java.util.HashMap() modelInput.put("concatField", request.getFirstParam("q")) modelInput */

    outputScript - string

    Javascript code that receives output from ML service as a HashMap called "modelOutput". Most of the time this is used to place prediction results in the request or context. Refer to examples.

    Default: /* This output script receives the output prediction from the ML model service as a HashMap called "modelOutput". Most of the time this is used to place prediction results in the request or context for downstream pipeline stages to consume. This script receives these objects and can be referenced in your script: - modelOutput (a HashMap containing fields/values returned from ML model service) - request - response - context - log (Logger useful for debugging) Example: Place predictedLabel (string) on request request.putSingleParam("sentiment", modelOutput.get("predictedLabel")) */