Browse Source

[Project] Add classify redis script

pull/4718/head
Vsevolod Stakhov 2 years ago
parent
commit
44c6c563c2
No known key found for this signature in database GPG Key ID: 7647B6790081437
  1. 1
      .luacheckrc
  2. 26
      lualib/redis_scripts/bayes_classify.lua

1
.luacheckrc

@ -64,6 +64,7 @@ files['/**/lualib/redis_scripts/**'].globals = {
'redis',
'KEYS',
'cjson',
'cmsgpack',
}
files['/**/src/rspamadm/*'].globals = {

26
lualib/redis_scripts/bayes_classify.lua

@ -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 })
Loading…
Cancel
Save