[ https://issues.apache.org/jira/browse/LUCENE-1842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12746451#action_12746451 ]
Uwe Schindler edited comment on LUCENE-1842 at 8/22/09 6:07 AM: ---------------------------------------------------------------- As I said, this can be solved the following way: When you *create* the TokenStreams, tell them to use *one* AttributeSource (using the new ctors from LUCENE-1826). The problem in your example is, that you use reuseableTokenStreams from an analyzer which has no possibility to use a different factory/attributesource. To solve this here, either create the streams directly and cache the complete merger (use a MergeAnalyzer that caches the tokenstreams to merge) or we have to add a factory/attributesource also to Analyzer's ctor. was (Author: thetaphi): As I said, this can be solved the following way: When you *create* the TokenStreams, tell them to use *one* (using the new ctors from LUCENE-1826). The problem in your example is, that you use reuseableTokenStreams from an analyzer which has no possibility to use a different factory/attributesource. To solve this here, either create the streams directly and cache the complete merger (use a MergeAnalyzer that caches the tokenstreams to merge) or we have to add a factory/attributesource also to Analyzer's ctor. > 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 > Priority: Minor > > 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