|
|
@@ -0,0 +1,26 @@ |
|
|
|
-- Lua script to perform bayes classification |
|
|
|
-- This script accepts the following parameters: |
|
|
|
-- key1 - prefix for bayes tokens (e.g. for per-user classification) |
|
|
|
-- key2 - set of tokens encoded in messagepack array of int64_t |
|
|
|
|
|
|
|
local prefix = KEYS[1] |
|
|
|
local input_tokens = cmsgpack.unpack(KEYS[2]) |
|
|
|
local output_spam = {} |
|
|
|
local output_ham = {} |
|
|
|
|
|
|
|
for i, token in ipairs(input_tokens) do |
|
|
|
local token_data = redis.call('HMGET', prefix .. tostring(token), 'H', 'S') |
|
|
|
|
|
|
|
if token_data then |
|
|
|
local ham_count = tonumber(token_data[1]) or 0 |
|
|
|
local spam_count = tonumber(token_data[2]) or 0 |
|
|
|
|
|
|
|
output_ham[i] = ham_count |
|
|
|
output_spam[i] = spam_count |
|
|
|
else |
|
|
|
output_ham[i] = 0 |
|
|
|
output_spam[i] = 0 |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
return cmsgpack.pack({ output_ham, output_spam }) |