Just carefully tested such thing with BALZ. Well, it's works! However, I'll not hurry to add it.
Code:
int pos=head[HSIZE+gethash3(i)];
if (pos) {
// search for short string
}
pos=head[gethash4(i)];
while (pos) {
// do a hash chained search
pos=prev[pos];
}
// ...
head[HSIZE+gethash3(i)]=i;
int h=gethash4(i)
prev[i]=head[h];
head[h]=i;
// ...
Even with large HSIZE match finder finds not all short strings. At the same time such thing may do slightly deeper search - since we limit a hash chain length to 8192, and 4 byte hash is better than 3 byte. Will do more tests...