Thanks for the plug Erick, but my deep dive doesn't go quite that deep (yet.)

But I'm sure a 2,500 page book on how to develop all manner of custom Solr plugin would indeed be valuable though.

But I do have plenty of example of using the many builtin Solr analysis filters.

-- Jack Krupansky

-----Original Message----- From: Erick Erickson
Sent: Friday, November 08, 2013 10:36 AM
To: solr-user@lucene.apache.org
Subject: Re: Error instantiating a Custom Filter in Solr

Well, I think Jack Krupansky's book has some examples, at $10 it's probably
a steal.

Best,
Erick




On Fri, Nov 8, 2013 at 1:49 AM, Dileepa Jayakody
<dileepajayak...@gmail.com>wrote:

Hi Erick,

Thanks a lot for the pointer.
I looked at the LowerCaseFilterFactory class [1] and it's parent abstract
class AbstractAnalysisFactory API [2] , and modified my custom filter
factory class as below;

public class ContentFilterFactory extends TokenFilterFactory {

public ContentFilterFactory() {
super();
}

@Override
public void init(Map<String, String> args) {
super.init(args);
}

@Override
public ContentFilter create(TokenStream input) {
assureMatchVersion();
return new ContentFilter(input);
}
}

I have called the parent's init method as above, but I'm still getting the
same error of : java.lang.NoSuchMethodException: com.solr.test.analyzer.
ContentFilterFactory.<init>(java.util.Map)

Any input on this?
Can some one please point me to a doc/blog or any sample to implement a
custom filter with Solr > 4.0
I'm using Solr 4.5.0 server.

Thanks,
Dileepa

[1]

http://search-lucene.com/c/Lucene:analysis/common/src/java/org/apache/lucene/analysis/core/LowerCaseFilterFactory.java
[2]

https://lucene.apache.org/core/4_2_0/analyzers-common/org/apache/lucene/analysis/util/AbstractAnalysisFactory.html


On Fri, Nov 8, 2013 at 4:25 AM, Erick Erickson <erickerick...@gmail.com
>wrote:

> Well, the example you linked to is based on 3.6, and things have
> changed assuming you're using 4.0.
>
> It's probably that your ContentFilter isn't implementing what it needs > to
> or it's not subclassing from the correct class for 4.0.
>
> Maybe take a look at something simple like LowerCaseFilterFactory
> and use that as a model, although you probably don't need to implement
> the MultiTermAware bit.
>
> FWIW,
> Erick
>
>
> On Thu, Nov 7, 2013 at 1:31 PM, Dileepa Jayakody
> <dileepajayak...@gmail.com>wrote:
>
> > Hi All,
> >
> > I'm  a novice in Solr and I'm continuously bumping into problems with
my
> > custom filter I'm trying to use for analyzing a fieldType during
indexing
> > as below;
> >
> > <fieldType name="stanbolRequestType" class="solr.TextField">
> >   <analyzer type="index">
> >     <tokenizer class="solr.KeywordTokenizerFactory"/>
> >     <filter class= "com.solr.test.analyzer.ContentFilterFactory"/>
> >   </analyzer>
> > </fieldType>
> >
> > Below is my custom FilterFactory class;
> >
> > *public class ContentFilterFactory extends TokenFilterFactory {*
> >
> > * public ContentFilterFactory() {*
> > * super();*
> > * }*
> >
> > * @Override*
> > * public TokenStream create(TokenStream input) {*
> > * return new ContentFilter(input);*
> > * }*
> > *}*
> >
> > I'm getting below error stack trace [1] caused by a
NoSuchMethodException
> > when starting the server.
> > Solr complains that it cannot init the Plugin (my custom filter)  as
the
> > FilterFactory class doesn't have a init method; But in the example [2]
I
> > was following didn't have any notion of a init method in the
> FilterFactory
> > class, nor I was required to override an init method when extending
> > TokenFilterFactory class.
> >
> > Can someone please help me resolve this error and get my custom filter
> > working?
> >
> > Thanks,
> > Dileepa
> >
> > [1]
> > Caused by: org.apache.solr.common.SolrException: Plugin init failure
for
> > [schema.xml] fieldType "stanbolRequestType": Plugin init failure for
> > [schema.xml] analyzer/filter: Error instantiating class:
> > 'com.solr.test.analyzer.ContentFilterFactory'
> > at
> >
> >
>
org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:177)
> > at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:468)
> > ... 13 more
> > Caused by: org.apache.solr.common.SolrException: Plugin init failure
for
> > [schema.xml] analyzer/filter: Error instantiating class:
> > 'com.solr.test.analyzer.ContentFilterFactory'
> > at
> >
> >
>
org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:177)
> > at
> >
> >
>
org.apache.solr.schema.FieldTypePluginLoader.readAnalyzer(FieldTypePluginLoader.java:400)
> > at
> >
> >
>
org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:95)
> > at
> >
> >
>
org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:43)
> > at
> >
> >
>
org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151)
> > ... 14 more
> > Caused by: org.apache.solr.common.SolrException: Error instantiating
> class:
> > 'com.solr.test.analyzer.ContentFilterFactory'
> > at
> >
> >
>
org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:556)
> > at
> >
> >
>
org.apache.solr.schema.FieldTypePluginLoader$3.create(FieldTypePluginLoader.java:382)
> > at
> >
> >
>
org.apache.solr.schema.FieldTypePluginLoader$3.create(FieldTypePluginLoader.java:376)
> > at
> >
> >
>
org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151)
> > ... 18 more
> > Caused by: java.lang.NoSuchMethodException:
> > com.solr.test.analyzer.ContentFilterFactory.<init>(java.util.Map)
> > at java.lang.Class.getConstructor0(Class.java:2810)
> > at java.lang.Class.getConstructor(Class.java:1718)
> > at
> >
> >
>
org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:552)
> > ... 21 more
> >
> > [2] http://solr.pl/en/2012/05/14/developing-your-own-solr-filter/
> >
>


Reply via email to