You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Dawn <li...@live.com> on 2020/12/02 02:35:42 UTC
java.lang.IllegalArgumentException: Comparison method violates its
general contract
hello:
jdk11 solr8.7.0
org.apache.solr.common.SolrException: java.lang.IllegalArgumentException: Comparison method violates its general contract
QueryRescorer line 114
Comparator<ScoreDoc> sortDocComparator = new Comparator<ScoreDoc>() {
@Override
public int compare(ScoreDoc a, ScoreDoc b) {
// Sort by score descending, then docID ascending:
if (a.score > b.score) {
return -1;
} else if (a.score < b.score) {
return 1;
} else {
// This subtraction can't overflow int
// because docIDs are >= 0:
return a.doc - b.doc;
}
}
};
After 1.7, the Collections.sort() method needs to return the result of 0.
Do I have to change this to -Float.compare(a.score, b.score)
Without adding JVM parameters: -Djava.util.Arrays.useLegacyMergeSort=true