[
https://issues.apache.org/jira/browse/LUCENE-2154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12831489#action_12831489
]
Uwe Schindler commented on LUCENE-2154:
---------------------------------------
The problem is the following:
Attributes are not to be retrieved on every call to next(), they are get/added
after construction. If you have a consumer of your MultiEnum, it calls
attributes().getAttribute exactly one time before start to enumerate
tokens/positions/whatever. If your proposed MultiAttributeSource would return
the attribute of the first sub-enum, the consumer would stay with this
attribute instance forever. If the MultiEnum then changes to another sub-enum,
the consumer would not see the new attribute.
Because of that the right way is not to have a MultiAttributeSource. What you
need are proxy attributes. The Attributes itsself must be proxies, delegating
the call to the current enum's corresponding attribute. The same was done in
Lucene 2.9 to emulate the backwards compatibility for TokenStreams. The proxy
was TokenWrapper. These ProxyAttributes would look exactly like this
TokenWrapper impl class.
> Need a clean way for Dir/MultiReader to "merge" the AttributeSources of the
> sub-readers
> ---------------------------------------------------------------------------------------
>
> Key: LUCENE-2154
> URL: https://issues.apache.org/jira/browse/LUCENE-2154
> Project: Lucene - Java
> Issue Type: Bug
> Components: Index
> Affects Versions: Flex Branch
> Reporter: Michael McCandless
> Fix For: Flex Branch
>
>
> The flex API allows extensibility at the Fields/Terms/Docs/PositionsEnum
> levels, for a codec to set custom attrs.
> But, it's currently broken for Dir/MultiReader, which must somehow share
> attrs across all the sub-readers. Somehow we must make a single attr source,
> and tell each sub-reader's enum to use that instead of creating its own.
> Hopefully Uwe can work some magic here :)
--
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: [email protected]
For additional commands, e-mail: [email protected]