[ https://issues.apache.org/jira/browse/LUCENE-1842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12746369#action_12746369 ]
Michael Busch commented on LUCENE-1842: --------------------------------------- {quote} Allows creating only a single actual AttributeSource per thread that can then be used for indexing with a multitude of TokenStream/Tokenizer combinations (allowing utmost reuse of TokenStream/Tokenizer instances) {quote} I don't understand why this would be better. Now if reusable TokenStreams are used then they contain already all necessary attributes after the first use and reset only needs to reset the default values. With your proposed change an AttributeSource would be used across different TokenStreams. So for each document you would fill the maps multiple times with different attributes. Even if the reflection costs are low, you still pay the price for filling the two hashmaps and the cache lookups. Why is that better than having per-thread reusable Tokenstreams with their own AttributeSources and not-changing attributes? Or maybe I'm missing something in your proposal? > Add reset(AttributeSource) method to AttributeSource > ---------------------------------------------------- > > Key: LUCENE-1842 > URL: https://issues.apache.org/jira/browse/LUCENE-1842 > Project: Lucene - Java > Issue Type: Wish > Components: Analysis > Reporter: Tim Smith > Fix For: 2.9 > > > Originally proposed in LUCENE-1826 > Proposing the addition of the following method to AttributeSource > {code} > public void reset(AttributeSource input) { > if (input == null) { > throw new IllegalArgumentException("input AttributeSource must not be > null"); > } > this.attributes = input.attributes; > this.attributeImpls = input.attributeImpls; > this.factory = input.factory; > } > {code} > Impacts: > * requires all TokenStreams/TokenFIlters/etc to call addAttribute() in their > reset() method, not in their constructor > * requires making AttributeSource.attributes and > AttributeSource.attributesImpl non-final > Advantages: > Allows creating only a single actual AttributeSource per thread that can then > be used for indexing with a multitude of TokenStream/Tokenizer combinations > (allowing utmost reuse of TokenStream/Tokenizer instances) > this results in only a single "attributes"/"attributesImpl" map being > required per thread > addAttribute() calls will almost always return right away (will only be > "initialized" once per thread) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org