To implement Markovian weighting, the following pieces must be configured: 1. The storage driver. Be sure and compile using Bill Yerazunis' CRM114 Sparse Spectra driver (hash_drv). This is the only driver that is presently fast enough to handle the extra data generated by the tokenizer used. NOTE: If you plan on doing TEFT or TUM type training, you'll need a huge database. In dspam.conf, HashRecMax should be set to around 5000000 with a HashExtentSize of around 1000000. If you run into performance issues, you may consider increasing this or use csscompress after training NOTE: Bill has told me that TOE yields the best results on real-world email, however for initial training TEFT or a TUNE approach might be best. 2. The tokenizer. This is set via 'Features' and is defaulted to 'chained'. Comment out chained and use 'sbph' instead. This implements Bill Yerazunis' (CRM114) Sparse Binary Polynomial Hashing tokenizer, which is used in Markovian weighting. 3. The value computing algorithm. This should be set to 'markov' which uses Markovian weighting. Comment out graham. 4. The combination algorithm (Algorithm). This should be set to 'naive' to act like CRM114 or you may consider 'burton', which gave me slightly better results. Comment out any existing algorithms. 5. Training. Do not corpus train. Rather, consider using something like the included train.pl example script. You can emulate TUNE training if you really want to by setting your training mode to TOE and re-running the script until no errors are generated. This implements the "standard" CRM114ish Markovian type discrimination, but you could also mix and match different tokenizers and combination algorithms if you wanted to play around. It's quite possible you may get better results from using a different combo. The only thing that is certain is the value computing algorithm should always be 'markov'.