lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler" <>
Subject RE: Having a default constructor in Analyzers
Date Mon, 08 Feb 2010 09:57:47 GMT
> Sanne, I would recommend you building a Factory pattern around you
> Analyzers / TokenStreams similar to what solr does. That way you can
> load you own "default ctor" interface via reflection and obtain you
> analyzers from those factories. That makes more sense anyway as you
> only load the factory via reflection an not the analyzers.

As far as I see, Hibernate uses Solr Factories.  On the other hand, you can instead of creating
your own SolrAnalyzer also use a "standard" one from Lucene (you can do this in Solr, too):

In my opinion, the Factory pattern is ok for own analyzer definitions. For reusing "standard"
analyzers like "StandardAnalyzer" or "TurkishAnalyzer", the ideal case is to use the reflection
code I proposed before. This code works for all language-based analyzers having a standard
ctor or Version ctor. Solr will also handle this reflection-based instantiation with optional
Version parameter in future, too (Eric Hatcher pointed that out to me, when working on SOLR-1677:
"Another comment on this... Solr supports using an Analyzer also, but only ones with zero-arg
constructors. It would be nice if this Version support also allowed for Analyzers (say SmartChineseAnalyzer)
to be used also directly. I don't think this patch accounts for this case, does it?").

As Hibernate also uses the factory pattern for custom analyzers, as soon as
is in, the version problem for those should be solved, too (as you can specify the parameter
to each component). But Hibernate should also think about a global default Version (like Solr
via CoreAware or like that), that is used as a default param to all Tokenizers/TokenFilters
and when reflection-based Anaylzer subclass instantiation is used.

By the way, hibernate's reuse of Solr's schema is one argument of Hoss, not to make it CoreAware.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message