Write a Lua Script for Post-Processing

An Eduction post-processing task runs a Lua script.

Your script must define a function named processmatch, which takes a single argument, an edkMatch object. The matches that are found by Eduction are passed into the script one at a time. The script must return a Boolean value: true to keep the match or false to discard it.

The following example changes the score for every match to 0.5:

function processmatch(edkmatch)
    if edkmatch then
        -- change the score for the match
        edkmatch:setScore(0.5)
    end
    return true
end

Process Matches En Masse

Sometimes, you might prefer to process all of the matches together. For example, you might want to increase the scores of matches that appear near other matches. It is easier to do this if you process all of the matches at the same time.

To process all of the matches at the same time, modify your Eduction configuration and set the parameter ProcessEnMasse to TRUE. When ProcessEnMasse=TRUE, all of the matches found by Eduction are passed into the script together.

Your script must define a function named processmatches, which takes a single argument, a Lua table of edkEnMasseMatch objects. Each of these objects represents a single match, but you must call the getMatch method to obtain an edkMatch object. You can then use the edkMatch object to manipulate the match. If you want to discard a match, call the method setOutput on the relevant edkEnMasseMatch object.

The following example demonstrates how to iterate over the elements in the table and discard any match with a score that is less than 0.5:

function processmatches(matches)
    -- example that discards matches with score < 0.5
    for k,v in ipairs (matches) do
        local edkmatch = v:getMatch()
        if edkmatch:getScore() < 0.5 then
            v:setOutput(false)
        end
    end
end

For information about the objects and methods that you can use in your Lua post-processing scripts, see Eduction Lua Methods Reference.

Pass Parameters into the Lua Script

You can pass additional parameters into post-processing tasks that you run through the Eduction API. To add an additional parameter (to all post-processing tasks that run during the session), call the appropriate function:

Any parameters that you set using these functions are passed into the processmatch or processmatches function of the Lua script as a table of key-value pairs. For example:

function processmatch(edkmatch, params)
    for k,v in pairs (params) do
        --print ("Custom parameter ", k, " has value ", v)
    end
    return true
end

_FT_HTML5_bannerTitle.htm