You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by yo...@apache.org on 2009/06/07 03:41:38 UTC

svn commit: r782325 - /lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryElevationComponent.java

Author: yonik
Date: Sun Jun  7 01:41:38 2009
New Revision: 782325

URL: http://svn.apache.org/viewvc?rev=782325&view=rev
Log:
SOLR-1111: fix hashCode/equals for Sort in QueryElevationComponent by using singletons

Modified:
    lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryElevationComponent.java

Modified: lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryElevationComponent.java?rev=782325&r1=782324&r2=782325&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryElevationComponent.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryElevationComponent.java Sun Jun  7 01:41:38 2009
@@ -99,6 +99,9 @@
     final BooleanQuery include;
     final Map<String,Integer> priority;
     
+    // use singletons so hashCode/equals on Sort will just work
+    final FieldComparatorSource comparatorSource;
+
     ElevationObj( String qstr, List<String> elevate, List<String> exclude ) throws IOException
     {
       this.text = qstr;
@@ -124,6 +127,8 @@
           this.exclude[i] = new BooleanClause( tq, BooleanClause.Occur.MUST_NOT );
         }
       }
+
+      this.comparatorSource = new ElevationComparatorSource(priority);
     }
   }
   
@@ -348,7 +353,7 @@
       SortSpec sortSpec = rb.getSortSpec();
       if( sortSpec.getSort() == null ) {
         sortSpec.setSort( new Sort( new SortField[] {
-            new SortField(idField, new ElevationComparatorSource(booster.priority), false ),
+            new SortField(idField, booster.comparatorSource, false ),
             new SortField(null, SortField.SCORE, false)
         }));
       }
@@ -359,14 +364,12 @@
         ArrayList<SortField> sorts = new ArrayList<SortField>( current.length + 1 );
         // Perhaps force it to always sort by score
         if( force && current[0].getType() != SortField.SCORE ) {
-          sorts.add( new SortField(idField, 
-              new ElevationComparatorSource(booster.priority), false ) );
+          sorts.add( new SortField(idField, booster.comparatorSource, false ) );
           modify = true;
         }
         for( SortField sf : current ) {
           if( sf.getType() == SortField.SCORE ) {
-            sorts.add( new SortField(idField, 
-                new ElevationComparatorSource(booster.priority), sf.getReverse() ) );
+            sorts.add( new SortField(idField, booster.comparatorSource, sf.getReverse() ) );
             modify = true;
           }
           sorts.add( sf );
@@ -479,7 +482,7 @@
       }
 
       public int sortType() {
-        return SortField.INT;
+        return SortField.CUSTOM;
       }
 
       public Comparable value(int slot) {