Use double for topic weighting, instead of float, to avoid hashCodes differing between read and write