I think it's a little strange to load the count in super's .load(InputStream) method, and then fwd to sub's .load(DataInput)?
(Separately I think it's good to switch .store/.load from OutputStream/InputStream to DataOutput/DataInput).
Maybe ... we can just do the change from "void build" to "int build", and not worry about adding a .getCount() from a load'd suggester. This way the app knows how many suggestions were built when creating the suggester and if really cares to persist this info it can do so itself? Or, we can keep the .getCount, but have each suggester handle writing/reading it itself? I just think it's odd to have super write/read this ...
It's also not great how these suggesters don't use CodecUtil.write/readHeader to make sure the file they are loading is in fact something that this suggester had previously .stored ... but we can fix that separately.