8.15.3 Advanced Scoring Tips

The & and | logical operators do short-circuit logic. That is, they stop processing their arguments when it’s clear what the result of the operation will be. For instance, if one of the arguments of an & evaluates to false, there’s no point in evaluating the rest of the arguments. This means that you should put slow matches (‘body’, ‘header’) last and quick matches (‘from’, ‘subject’) first.

The indirection arguments (1- and so on) will make their arguments work on previous generations of the thread. If you say something like:

...
(1-
 (1-
  ("from" "lars")))
...

Then that means “score on the from header of the grandparent of the current article”. An indirection is quite fast, but it’s better to say:

(1-
 (&
  ("from" "Lars")
  ("subject" "Gnus")))

than it is to say:

(&
 (1- ("from" "Lars"))
 (1- ("subject" "Gnus")))