lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler (JIRA)" <>
Subject [jira] Updated: (LUCENE-2154) Need a clean way for Dir/MultiReader to "merge" the AttributeSources of the sub-readers
Date Fri, 12 Feb 2010 18:04:28 GMT


Uwe Schindler updated LUCENE-2154:

    Attachment: LUCENE-2154-javassist.patch

Here the last CGLIB patch for reference.

Now the real cool class created using JAVASSIST []:
You have to place the latest javassist.jar (Mozilla/LGPL licensed) in the lib/ folder and
apply the patch. What it does is the fastest proxy we can think of:
It creates a subclass of ProxyAttributeImpl that implements all methods of the interface natively
in bytecode using JAVASSIST's bytecode generation tools (a subset of the Java language spec).

The micro-benchmark shows, no difference between proxied and native method - as hotspot removes
the extra method call.

With Javassist it would even be possible to create classes that implement our interfaces around
simple fields that are set by get/setters. Just like Eclipse's create get/set around a private
field. That would be really cool. Or we could create combining attributes on the fly, Michael
Busch would be excited. All *Impl classes we currently have would be almost obsolete (except
TermAttributeImpl, which is rather complex). We could also create dynamic State classes for
capturing state...

Nice, but a little bit hackish. Maybe we put this first into contrib and supply a ConcenatingTokenStream
as demo impl and also other Solr TokenStreams that are no longer easy with the Attributes
without proxies (Robert listed some).

> Need a clean way for Dir/MultiReader to "merge" the AttributeSources of the sub-readers
> ---------------------------------------------------------------------------------------
>                 Key: LUCENE-2154
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Index
>    Affects Versions: Flex Branch
>            Reporter: Michael McCandless
>             Fix For: Flex Branch
>         Attachments: LUCENE-2154-cglib.patch, LUCENE-2154-javassist.patch, LUCENE-2154.patch,
> 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:
For additional commands, e-mail:

View raw message