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 2015/03/23 14:58:24 UTC

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

Author: tommaso
Date: Mon Mar 23 13:58:24 2015
New Revision: 1668641

URL: http://svn.apache.org/r1668641
Log:
OAK-2666 - wrong update fixed, also fixed lms rule

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=1668641&r1=1668640&r2=1668641&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 Mon Mar 23 13:58:24 2015
@@ -49,15 +49,15 @@ class LMSEstimator {
         double[] updatedWeights = new double[weights.length];
         long estimate = estimate(filter);
         long numFound = docs.getNumFound();
-        long delta = numFound - estimate;
+        double delta = Math.pow(numFound - estimate, 2) / 2;
         if (Math.abs(delta) > threshold) {
             for (int i = 0; i < updatedWeights.length; i++) {
                 double errors = delta * getInput(filter, i);
                 updatedWeights[i] = weights[i] + alpha * errors;
             }
+            // weights updated
+            weights = Arrays.copyOf(updatedWeights, 5);
         }
-        // weights updated
-        weights = Arrays.copyOf(updatedWeights, 5);
     }
 
     long estimate(Filter filter) {