Come for the quick hacks, stay for the epiphanies. | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
The basic idea is to encode the precomputed keys into a string, usually using pack() such that perl can sort them lexicographically
This is a key point. I've seen it overlooked in two cases, both leading to subtle sorting problems of the "well, this stuff sorts most of the time" variety. A naive read of Guttman-Rosler is "hey, let's cram the key parts together in a way we can uncram them later." That's necessary, but not sufficient. Simple concatenation won't do. You must pack(), or concatenate in such a way that the keys are aligned for a lexicographic sort. If you see someone use join in a Guttman-Rosler search, watch out! Consider the difference between If you don't align the keys (typically via pack or a carefully crafted sprintf), you risk getting composite keys that sort correctly most of the time. A variant of the problem can occur with non-numeric strings when joining them with a character like '|'.
In reply to Re: Advanced Sorting - GRT - Guttman Rosler Transform
by dws
|
|