gsmiller commented on a change in pull request #138:
URL: https://github.com/apache/lucene/pull/138#discussion_r639247815



##########
File path: lucene/facet/src/java/org/apache/lucene/facet/DrillDownQuery.java
##########
@@ -170,15 +184,43 @@ private BooleanQuery getBooleanQuery() {
     return bq.build();
   }
 
-  Query getBaseQuery() {
+  /**
+   * Returns the internal baseQuery of the DrillDownQuery
+   *
+   * @return The baseQuery used on initialization of DrillDownQuery
+   */
+  public Query getBaseQuery() {
     return baseQuery;
   }
 
-  Query[] getDrillDownQueries() {
+  /**
+   * Returns the dimension queries added either via {@link #add(String, 
Query)} or {@link
+   * #add(String, String...)}
+   *
+   * @return The array of dimQueries
+   */
+  public Query[] getDrillDownQueries() {
+    if (isAnyDimQueryDirty == false) {
+      // returns previously built dimQueries
+      Query[] builtDimQueriesCopy = new Query[builtDimQueries.size()];
+      return builtDimQueries.toArray(builtDimQueriesCopy);
+    }
     Query[] dimQueries = new Query[this.dimQueries.size()];
     for (int i = 0; i < dimQueries.length; ++i) {
-      dimQueries[i] = this.dimQueries.get(i).build();
+      if (isDimQueryDirty.get(i) == true) {

Review comment:
       What if you alternatively kept a list of query indexes that are "dirty" 
and then only iterate through that list, rebuilding each one. If that list is 
empty, you know nothing has been updated. This seems more efficient than 
tracking a global boolean and a boolean for each dimension.




-- 
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.

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



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

Reply via email to