Author: tommaso
Date: Wed May 2 12:34:24 2018
New Revision: 1830748
URL: http://svn.apache.org/viewvc?rev=1830748&view=rev
Log:
OAK-7466 - reset weights in case of weights over/underflow
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/LMSEstimator.java
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/LMSEstimator.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/LMSEstimator.java?rev=1830748&r1=1830747&r2=1830748&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/LMSEstimator.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/LMSEstimator.java
Wed May 2 12:34:24 2018
@@ -70,6 +70,11 @@ class LMSEstimator {
for (int i = 0; i < 5; i++) {
estimatedEntryCount += weights[i] * getInput(filter, i);
}
+ if (Double.isInfinite(estimatedEntryCount) ||
Double.isNaN(estimatedEntryCount)) {
+ // prevent over / under flow
+ estimatedEntryCount = 1;
+ weights = new double[5];
+ }
return Math.max(0, estimatedEntryCount);
}