NLPchina/nlp-lang

JDK版本不同,fingerprint方法可能会算出不同指纹。

zhangnanw opened this issue · 5 comments

算指纹方法里面的特征词计算的是HashSet的toString()方法的Hash值。
HashSet元素顺序与实现有关。
不同版本的JDK,HashSet顺序,很可能不一样。
不同环境,可能有不同指纹。

是的这是个比较有趣的问题....是我不够严谨了...应该用自己的hash算法做排序的...

我的修改方案是直接修改HashSet为TreeSet,这样就是按照字典排序了。

但没敢使用在生产环境。
生产环境还是通过强制规定JDK版本来规避这个问题。

用treeset的确是可以的..据我观察jdk的hash算法基本是不变的.不过如果用自己的hash算法可能更稳妥..

FingerprintService 指纹产生的算法能解说一下吗。谢谢了。

@ahkimkoo 抽取n个关键词。然后做md5