Use an Expanded Request Cooker

An expanded request cooker is similar to a request cooker, but it modifies the action after QMS has processed rules and expanded the query according to those rules.

The request cooker is a Lua script that processes the action.

When you use an expanded request cooker, QMS applies whitelist, blacklist, and query text processing to the original action, and then sends the original action, the modified action, and the list of applied rules to the cooker. The cooker processes the query further, and then returns the final modified request.

The cooker must specify the whole action to use.

Expanded Request Cooker Lua Scripts

The Lua script must provide a globally accessible cook_expanded_request function, which accepts three arguments:

The function must return a Lua table. The keys of this table are the parameter names to use in the action (the parameter names must be in lower case). The table values are the corresponding request values.

QMS loads the Lua script for every request that it cooks. This means that any changes to the script are reflected immediately in the query behavior.

You can use the IDOL Lua libraries in your Lua scripts. For more information about the available functions and methods, see the QMS Reference.

The following example Lua script changes the value of MaxResults according to whether a particular rule was activated in the query, and adds additional query terms when other rules were activated.

aci = require "lua/autn_aci"
function cook_expanded_request(request, expanded_request, matched_rules)
   req = aci.parse_request_string(expanded_request)
 
   if matched_rules["fieldexpand"] ~= nil then
      req["maxresults"] = "10"
   else
      req["maxresults"] = "3"
   end

   if matched_rules["synonym1"] ~= nil then
      req["text"] = string.format("%s AND Spain", req["text"])
   end

   if matched_rules["finance"] ~= nil then
      req["text"] = string.format("%s OR money", req["text"])
   end

   return req
end

Configure the Expanded Request Cooker

The following procedure describes how to configure QMS to use a request cooker from an external service, or a Lua script.

To use a request cooker

  1. Open the QMS configuration file in a text editor.
  2. Add a [ExpandedRequestCooker] section to the QMS configuration file.

  3. In the [ExpandedRequestCooker] section of the configuration file, set Script to the path to the script that you want to use. For example:

    [ExpandedRequestCooker]
    Script=qms\lua\cookrequest-maxresults.lua
  4. Send queries to QMS with the CookRequest parameter set to True.

    If you want to cook all requests that you send to QMS, set the CookAllRequests configuration parameter to True.

    NOTE:

    When you set CookAllRequests to True, QMS does not retrieve or process cardinal placements.

Refer to the QMS Reference for more information on how to configure query cooking.


_FT_HTML5_bannerTitle.htm