Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 3.4.4, 3.5.0
-
Component/s: Clustering Algorithms, Framework Core
-
Labels:None
Description
The new default sort for collections in JDK1.7 (TimSort) verifies Comparator contract and throws an exception if not fulfilled.
at java.util.TimSort.mergeHi(Unknown Source)
at java.util.TimSort.mergeAt(Unknown Source)
at java.util.TimSort.mergeCollapse(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at
org.carrot2.text.preprocessing.PhraseExtractor.extractPhrases(PhraseExtractor.java:106)
at
org.carrot2.text.preprocessing.pipeline.CompletePreprocessingPipeline.preprocess(CompletePreprocessingPipeline.java:58)
at
org.carrot2.text.preprocessing.pipeline.BasicPreprocessingPipeline.preprocess(BasicPreprocessingPipeline.java:92)
at
org.carrot2.clustering.lingo.LingoClusteringAlgorithm.cluster(LingoClusteringAlgorithm.java:198)
at
org.carrot2.clustering.lingo.LingoClusteringAlgorithm.access$0(LingoClusteringAlgorithm.java:195)
at
org.carrot2.clustering.lingo.LingoClusteringAlgorithm$1.process(LingoClusteringAlgorithm.java:177)
at
org.carrot2.text.clustering.MultilingualClustering.clusterByLanguage(MultilingualClustering.java:223)
at
org.carrot2.text.clustering.MultilingualClustering.process(MultilingualClustering.java:111)
at
org.carrot2.clustering.lingo.LingoClusteringAlgorithm.process(LingoClusteringAlgorithm.java:170)
at
org.carrot2.core.ControllerUtils.performProcessing(ControllerUtils.java:102)
at org.carrot2.core.Controller.process(Controller.java:347)
at org.carrot2.core.Controller.process(Controller.java:239)
at org.carrot2.examples.clustering.Test2.main(Test2.java:147)
A quick workaround is to use legacy sort by adding a JVM switch: -Djava.util.Arrays.useLegacyMergeSort=true