dsmiley commented on a change in pull request #1467:
URL: https://github.com/apache/lucene-solr/pull/1467#discussion_r417397488



##########
File path: lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
##########
@@ -364,4 +325,60 @@ public BytesRef term() throws IOException {
     }
   }
 
+  /**
+   * Used for sharing automata between segments
+   *
+   * Levenshtein automata are large and expensive to build; we don't want to 
build
+   * them directly on the query because this can blow up caches that use 
queries
+   * as keys; we also don't want to rebuild them for every segment.  This 
attribute
+   * allows the FuzzyTermsEnum to build the automata once for its first segment
+   * and then share them for subsequent segment calls.
+   */
+  private interface AutomatonAttribute extends Attribute {
+    CompiledAutomaton[] getAutomata();
+    int getTermLength();
+    void init(Supplier<FuzzyAutomatonBuilder> builder);
+  }
+
+  private static class AutomatonAttributeImpl extends AttributeImpl implements 
AutomatonAttribute {
+
+    private CompiledAutomaton[] automata;
+    private int termLength;
+
+    @Override
+    public CompiledAutomaton[] getAutomata() {
+      return automata;
+    }
+
+    @Override
+    public int getTermLength() {
+      return termLength;
+    }
+
+    @Override
+    public void init(Supplier<FuzzyAutomatonBuilder> supplier) {
+      if (automata != null) {
+        return;
+      }
+      FuzzyAutomatonBuilder builder = supplier.get();
+      this.termLength = builder.getTermLength();
+      this.automata = builder.buildAutomatonSet();
+    }
+
+    @Override
+    public void clear() {
+      this.automata = null;
+    }
+
+    @Override
+    public void reflectWith(AttributeReflector reflector) {

Review comment:
       Why not implement these like they are done on 8x?  I suspect 
introspection tools like "luke" / Solr analysis page may choke if this isn't 
done right.




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