public int matchScore(Person p, Person q){
        set.forEach(k -> engine.put(k, p.match(q, k)));
        Object ret = null;
        try{
            ret = ((Invocable)engine).invokeFunction(FUNC_NAME);
        } catch (ScriptException | NoSuchMethodException ex){
            throw new RuntimeException(ex);
        }
        if (ret == null) {
            throw new RuntimeException("null return");
        } else if (ret instanceof Number) {
            return ((Number)ret).intValue();
        }
        throw new RuntimeException("unknown return type : " + ret.getClass());
    }