You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by GitBox <gi...@apache.org> on 2021/09/08 13:54:07 UTC

[GitHub] [lucene] rmuir commented on a change in pull request #286: LUCENE-10089 Disable numeric sort optim when needed

rmuir commented on a change in pull request #286:
URL: https://github.com/apache/lucene/pull/286#discussion_r704440549



##########
File path: lucene/core/src/java/org/apache/lucene/search/SortField.java
##########
@@ -130,6 +130,9 @@
   // Used for 'sortMissingFirst/Last'
   protected Object missingValue = null;
 
+  // Indicates if numeric sort optimization is disabled. Enabled by default.
+  private boolean pointSortOptimizationDisabled = false;

Review comment:
       Can we make this "positive" to avoid double negatives? I suggest `private boolean optimizePoints = true;` It should also be deprecated.

##########
File path: lucene/core/src/java/org/apache/lucene/search/SortField.java
##########
@@ -606,4 +609,26 @@ public IndexSorter getIndexSorter() {
         return null;
     }
   }
+
+  /**
+   * Disable numeric sort optimization to use the Points index to skip over non-competitive
+   * documents. By default sorting on a numeric field activates point sort optimization that can
+   * efficiently skip non-competitive hits. Sort optimization has a number of requirements, one of
+   * which is that SortField.Type matches the Point type with which the field was indexed (e.g. sort
+   * on IntPoint field should use SortField.Type.INT). Another requirement is that the same data is
+   * indexed with points and doc values for the field.
+   *
+   * <p>This allows to disable sort optimization, in cases where these requirements can't be met.
+   *
+   * @deprecated should only be used for compatibility with 8.x indices that got created with
+   *     inconsistent data across fields, or the wrong sort configuration in the index sort
+   */
+  @Deprecated // Remove in Lucene 9
+  public void disablePointSortOptimization() {
+    this.pointSortOptimizationDisabled = true;
+  }
+
+  protected boolean pointSortOptimizationDisabled() {

Review comment:
       Can we make this an ordinary getter? I suggest `getOptimizePoints()`. It should be deprecated and public IMO.

##########
File path: lucene/core/src/java/org/apache/lucene/search/SortField.java
##########
@@ -606,4 +609,26 @@ public IndexSorter getIndexSorter() {
         return null;
     }
   }
+
+  /**
+   * Disable numeric sort optimization to use the Points index to skip over non-competitive
+   * documents. By default sorting on a numeric field activates point sort optimization that can
+   * efficiently skip non-competitive hits. Sort optimization has a number of requirements, one of
+   * which is that SortField.Type matches the Point type with which the field was indexed (e.g. sort
+   * on IntPoint field should use SortField.Type.INT). Another requirement is that the same data is
+   * indexed with points and doc values for the field.
+   *
+   * <p>This allows to disable sort optimization, in cases where these requirements can't be met.
+   *
+   * @deprecated should only be used for compatibility with 8.x indices that got created with
+   *     inconsistent data across fields, or the wrong sort configuration in the index sort
+   */
+  @Deprecated // Remove in Lucene 9
+  public void disablePointSortOptimization() {
+    this.pointSortOptimizationDisabled = true;
+  }

Review comment:
       Can we make this an ordinary setter? I suggest `setOptimizePoints(boolean)`.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org