On Tue, 2009-07-07 at 14:33 +0200, Peter Daum wrote:
> Just for clarification:
> 
> - I guess, your answer implies that the only way to write a rule where each
>    of several tests must match is via such a "meta" rule? (i.e. there is no
>    way to write a "regular" rule with multiple tests that must all match)
> 
That's the most general way. However, the hidden rules can be added:

meta RX ((__r1 + __r2 + __r3) > 2.0)

as the easiest way of saying that any two or three subrules must fire to
trigger the meta. You can often generalise phrases:

 /(account|personal|enter).{1,30}information/i

but this may not solve the problem because it implies some sort of
textual ordering which is never implicit in a meta rule. 

Its often useful to develop a rule without the underscores so you can
see what is firing, e.g. I have an MG_MONEY rule that recognises
monetary amounts and scores them as 0.1 and a MG_SF to recognise
Sourceforge mailing lists and scores them as 0.01. They also get used as
components in a meta to deliver an extra kicking, for instance terms
that appear in medical spam may be innocuous by themselves, but several
of them in combination mean spam.

> - there is nothing specific to "hidden tests" (i.e. tests whose name starts
>    with 2 underscores) about the meta rule mechanism, so meta rules can 
> arbitrarily
>    combine any other rules
> 
Correct.

> - whereas "hidden" tests are only useful for meta rules (when I prepend "__" 
> to
>    the name  of some other rule, it is not only hidden, but also ends up with 
> a
>    score of 0, even if there is some other score explicitly assigned)
> 
No, I think it carries a score of 1 (or the addition trick wouldn't
work) but 'hidden' rules don't get added into the overall score.


Martin


Reply via email to