Machine LearningQuery pipeline stage configuration specifications
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:
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"))
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:
|
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"))
*/