You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by to...@apache.org on 2018/05/02 12:34:24 UTC

svn commit: r1830748 - /jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/LMSEstimator.java

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);
     }