Renaud,

It's great that you're testing the flex APIs... things are still "in
flux" as you've seen.  There's another big patch pending on
LUCENE-2111...

Out of curiosity... in what circumstances do you see a Multi*Enum appearing?

Lucene's core always searches "by segment".  Are you doing something
external (directly using the flex APIs against a
Multi/DirectoryReader)?

Mike

On Tue, Feb 9, 2010 at 8:04 AM, Uwe Schindler <u...@thetaphi.de> wrote:
> Hi Renaud,
>
>
>> On 09/02/10 12:16, Uwe Schindler wrote:
>> > In flex the correct way to add additional posting data to these
>> classes would be the usage of custom attributes, registered in the
>> attributes() AttributeSource.
>> >
>> Ok, I have changed my codes to use the AttributeSource interface.
>> > Due to some limitations, there is currently no working support in
>> MultiReaders to have a "view" on the underlying Enums, but we are
>> working on that.
>> >
>> But, I have still the same problem, it seems that
>> MultiDocsAndPositionsEnum does not have access to the underlying
>> attributes added to my DocsAndPositionsEnum subclass. I got the
>> following exception (IllegalArgumentException):
>> "This AttributeSource does not have the attribute
>> 'org.sindice.siren.analysis.attributes.TupleAttribute'."
>>
>> Is this related to your previous comment, i.e., that MultiReaders do
>> not
>> have a view on the underlying Enums ?
>
> Exactly, MultiEnums have their own attributes at the moment, there is no 
> "Proxy" view on it. For this to work, proxy AttributeImpls are needed and 
> there is no support at the moment.
>
> See https://issues.apache.org/jira/browse/LUCENE-2154
>
> The problem behind is that when a consumer gets/adds an Attribute, all 
> subreaders  must use the same attribute or the MultiReader/DirectoryReader 
> must proxy the attributes. For this to work we need dynamic proxies or you 
> also have to implement ProxyImpls: Attribute, AttributeImpl, 
> AttributeProxyImpl.
>
> We have no progress for that at the moment, so I am sorry, we have no working 
> support for attributes in MultiReaders (which all DirectoryReaders are, 
> because a index could consist of more than one segment).
>
>> > In general what you do (if it works in future):
>> > Define an interface for your extensions based on the Attribute
>> interface and also provide the implementation class. Then call
>> YourEnums.attributes().addAttribute(YourInterface.class) in the ctor of
>> your enum, store a local reference to the attribute and fill this on
>> iteration. Any consumer of this Enum can check using
>> TermPositions.attributes().hasAttribute/getAttribute/addAttribute for
>> the existence of the the same and then read the attributes during
>> iteration. There is no need to change the Enum class API at all.
>> >
>> Ok, it works like a charm except the problem related to MultiReaders.
>
> See above.
>
> But attributes are the way to go for this extended posting/prox lists.
>
> Uwe
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-user-h...@lucene.apache.org
>
>

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

Reply via email to