[ 
https://issues.apache.org/jira/browse/SOLR-594?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hoss Man reassigned SOLR-594:
-----------------------------

    Assignee: Hoss Man

> StopFilterFactory, SynonymFilterFactory and EnglishProterFilterFactory not 
> backwards compatible because of inform
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-594
>                 URL: https://issues.apache.org/jira/browse/SOLR-594
>             Project: Solr
>          Issue Type: Bug
>    Affects Versions: 1.3
>            Reporter: Ronald Braun
>            Assignee: Hoss Man
>            Priority: Minor
>             Fix For: 1.3
>
>
> Direct construction of StopWordFilter is not backwards compatible between 1.2 
> and 1.3.  Here is some test code that throws a null pointer exception in 1.3 
> but that functions correctly in 1.2.
>      TokenizerFactory tokenizer = new WhitespaceTokenizerFactory();
>       Map<String, String> args = new HashMap<String, String>();
>       args.put("ignoreCase", "true");
>       args.put("words", "stopwords.txt");
>       StopFilterFactory stopFilter = new StopFilterFactory();
>       stopFilter.init(args);
>      args = new HashMap<String, String>();
>      args.put("generateWordParts", "1");
>      args.put("generateNumberParts", "1");
>      args.put("catenateWords", "0");
>      args.put("catenateNumbers", "0");
>      args.put("catenateAll", "0");
>      WordDelimiterFilterFactory wordFilter = new WordDelimiterFilterFactory();
>      wordFilter.init(args);
>      TokenFilterFactory[] filters = new TokenFilterFactory[] {stopFilter, 
> wordFilter };
>      TokenizerChain pipeline =TokenizerChain(tokenizer, filters);
>      /*** throws a null pointer exception in 1.3: ***/
>     boolean onlyStopWords = pipeline.tokenStream(null, new 
> StringReader(query)).next() == null;
> Hoss commented thusly in the solr forums (including a workaround):
> The short answer is: right after you call "stopFilter.init(args)" call
> "stopFilter.inform(solrCore.getSolrConfig().getResourceLoader());"
> This is an interesting use case that wasn't really considered when we
> switched away from using hte SolrCore singlton and the the
> ResourceLoaderAware interface was added.  we made sure things would still
> work for people who had their own custom Analysis Factories, but some of
> the functionality in *existing* Factories was moved from the init() method
> to inform() ... which means the classes aren't technically backwards
> compatibly for people doing what you're doing: constructing them directly.
> When I have some more time, i'll spin up a thread on solr-dev to discuss
> what we should do about this -- n the mean time feel free to file a bug
> that StopFilter isn't backwards compatible.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to