I think you have to compile all of the stempel source including your filter factory into one jar at the same time. Everybody does this; I don't know how different Java versions make class file binaries.
On Thu, Nov 11, 2010 at 3:06 AM, Jakub Godawa <jakub.god...@gmail.com> wrote: > Hi! Sorry for such a break, but I was moving house... anyway: > > 1. I took the > ~/apache-solr/src/java/org/apache/solr/analysis/StandardFilterFactory.java > file and modified it (named as StempelFilterFactory.java) in Vim that > way: > > package org.getopt.solr.analysis; > > import org.apache.lucene.analysis.TokenStream; > import org.apache.lucene.analysis.standard.StandardFilter; > > public class StempelTokenFilterFactory extends BaseTokenFilterFactory { > public StempelFilter create(TokenStream input) { > return new StempelFilter(input); > } > } > > 2. Then I put the file to the extracted stempel-1.0.jar in > ./org/getopt/solr/analysis/ > 3. Then I created a class from it: jar -cf > StempelTokenFilterFactory.class StempelFilterFactory.java > 4. Then I created new stempel-1.0.jar archive: jar -cf stempel-1.0.jar > -C ./stempel-1.0/ . > 5. Then in schema.xml I've put: > > <fieldType name="text_pl" class="solr.TextField"> > <analyzer> > <tokenizer class="solr.WhitespaceTokenizerFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > <filter class="org.getopt.solr.analysis.StempelTokenFilterFactory" /> > </analyzer> > </fieldType> > > 6. I started the solr server and I recieved the following error: > > 2010-11-11 11:50:56 org.apache.solr.common.SolrException log > SEVERE: java.lang.ClassFormatError: Incompatible magic value > 1347093252 in class file > org/getopt/solr/analysis/StempelTokenFilterFactory > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:634) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > ... > > Question: What is wrong? :) I use "jar (fastjar) 0.98" to create jars, > I googled on that error but with no answer gave me idea what is wrong > in my .java file. > > Please help, as I believe I am close to the end of that subject. > > Cheers, > Jakub Godawa. > > 2010/11/3 Lance Norskog <goks...@gmail.com>: >> Here's the problem: Solr is a little dumb about these Filter classes, >> and so you have to make a Factory object for the Stempel Filter. >> >> There are a lot of other FilterFactory classes. You would have to just >> copy one and change the names to Stempel and it might actually work. >> >> This will take some Solr programming- perhaps the author can help you? >> >> On Tue, Nov 2, 2010 at 7:08 AM, Jakub Godawa <jakub.god...@gmail.com> wrote: >>> Sorry, I am not Java programmer at all. I would appreciate more >>> verbose (or step by step) help. >>> >>> 2010/11/2 Bernd Fehling <bernd.fehl...@uni-bielefeld.de>: >>>> >>>> So you call org.getopt.solr.analysis.StempelTokenFilterFactory. >>>> In this case I would assume a file StempelTokenFilterFactory.class >>>> in your directory org/getopt/solr/analysis/. >>>> >>>> And a class which extends the BaseTokenFilterFactory rigth? >>>> ... >>>> public class StempelTokenFilterFactory extends BaseTokenFilterFactory >>>> implements ResourceLoaderAware { >>>> ... >>>> >>>> >>>> >>>> Am 02.11.2010 14:20, schrieb Jakub Godawa: >>>>> This is what stempel-1.0.jar consist of after jar -xf: >>>>> >>>>> jgod...@ubuntu:~/apache-solr-1.4.1/ifaq/lib$ ls -R org/ >>>>> org/: >>>>> egothor getopt >>>>> >>>>> org/egothor: >>>>> stemmer >>>>> >>>>> org/egothor/stemmer: >>>>> Cell.class Diff.class Gener.class MultiTrie2.class >>>>> Optimizer2.class Reduce.class Row.class TestAll.class >>>>> TestLoad.class Trie$StrEnum.class >>>>> Compile.class DiffIt.class Lift.class MultiTrie.class >>>>> Optimizer.class Reduce$Remap.class Stock.class Test.class >>>>> Trie.class >>>>> >>>>> org/getopt: >>>>> stempel >>>>> >>>>> org/getopt/stempel: >>>>> Benchmark.class lucene Stemmer.class >>>>> >>>>> org/getopt/stempel/lucene: >>>>> StempelAnalyzer.class StempelFilter.class >>>>> jgod...@ubuntu:~/apache-solr-1.4.1/ifaq/lib$ ls -R META-INF/ >>>>> META-INF/: >>>>> MANIFEST.MF >>>>> jgod...@ubuntu:~/apache-solr-1.4.1/ifaq/lib$ ls -R res >>>>> res: >>>>> tables >>>>> >>>>> res/tables: >>>>> readme.txt stemmer_1000.out stemmer_100.out stemmer_2000.out >>>>> stemmer_200.out stemmer_500.out stemmer_700.out >>>>> >>>>> 2010/11/2 Bernd Fehling <bernd.fehl...@uni-bielefeld.de>: >>>>>> Hi Jakub, >>>>>> >>>>>> if you unzip your stempel-1.0.jar do you have the >>>>>> required directory structure and file in there? >>>>>> org/getopt/stempel/lucene/StempelFilter.class >>>>>> >>>>>> Regards, >>>>>> Bernd >>>>>> >>>>>> Am 02.11.2010 13:54, schrieb Jakub Godawa: >>>>>>> Erick I've put the jar files like that before. I also added the >>>>>>> directive and put the file in instanceDir/lib >>>>>>> >>>>>>> What is still a problem is that even the files are loaded: >>>>>>> 2010-11-02 13:20:48 org.apache.solr.core.SolrResourceLoader >>>>>>> replaceClassLoader >>>>>>> INFO: Adding >>>>>>> 'file:/home/jgodawa/apache-solr-1.4.1/ifaq/lib/stempel-1.0.jar' >>>>>>> to classloader >>>>>>> >>>>>>> I am not able to use the FilterFactory... maybe I am attempting it in >>>>>>> a wrong way? >>>>>>> >>>>>>> Cheers, >>>>>>> Jakub Godawa. >>>>>>> >>>>>>> 2010/11/2 Erick Erickson <erickerick...@gmail.com>: >>>>>>>> The polish stemmer jar file needs to be findable by Solr, if you copy >>>>>>>> it to <solr_home>/lib and restart solr you should be set. >>>>>>>> >>>>>>>> Alternatively, you can add another <lib> directive to the >>>>>>>> solrconfig.xml >>>>>>>> file >>>>>>>> (there are several examples in that file already). >>>>>>>> >>>>>>>> I'm a little confused about not being able to find TokenFilter, is that >>>>>>>> still >>>>>>>> a problem? >>>>>>>> >>>>>>>> HTH >>>>>>>> Erick >>>>>>>> >>>>>>>> On Tue, Nov 2, 2010 at 8:07 AM, Jakub Godawa <jakub.god...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Thank you Bernd! I couldn't make it run though. Here is my problem: >>>>>>>>> >>>>>>>>> 1. There is a file ~/apache-solr-1.4.1/ifaq/lib/stempel-1.0.jar >>>>>>>>> 2. In ~/apache-solr-1.4.1/ifaq/solr/conf/solrconfig.xml there is a >>>>>>>>> directive: <lib path="../lib/stempel-1.0.jar" /> >>>>>>>>> 3. In ~/apache-solr-1.4.1/ifaq/solr/conf/schema.xml there is >>>>>>>>> fieldType: >>>>>>>>> >>>>>>>>> (...) >>>>>>>>> <!-- Polish --> >>>>>>>>> <fieldType name="text_pl" class="solr.TextField"> >>>>>>>>> <analyzer> >>>>>>>>> <tokenizer class="solr.WhitespaceTokenizerFactory"/> >>>>>>>>> <filter class="solr.LowerCaseFilterFactory"/> >>>>>>>>> <filter class="org.getopt.stempel.lucene.StempelFilter" /> >>>>>>>>> <!-- <filter >>>>>>>>> class="org.getopt.solr.analysis.StempelTokenFilterFactory" >>>>>>>>> protected="protwords.txt" /> --> >>>>>>>>> </analyzer> >>>>>>>>> </fieldType> >>>>>>>>> (...) >>>>>>>>> >>>>>>>>> 4. jar file is loaded but I got an error: >>>>>>>>> SEVERE: Could not start SOLR. Check solr/home property >>>>>>>>> java.lang.NoClassDefFoundError: org/apache/lucene/analysis/TokenFilter >>>>>>>>> at java.lang.ClassLoader.defineClass1(Native Method) >>>>>>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:634) >>>>>>>>> at >>>>>>>>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) >>>>>>>>> (...) >>>>>>>>> >>>>>>>>> 5. Different class gave me that one: >>>>>>>>> SEVERE: org.apache.solr.common.SolrException: Error loading class >>>>>>>>> 'org.getopt.solr.analysis.StempelTokenFilterFactory' >>>>>>>>> at >>>>>>>>> org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:375) >>>>>>>>> at >>>>>>>>> org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:390) >>>>>>>>> (...) >>>>>>>>> >>>>>>>>> Question is: How to make <fieldType /> and <filter /> work with that >>>>>>>>> Stempel? :) >>>>>>>>> >>>>>>>>> Cheers, >>>>>>>>> Jakub Godawa. >>>>>>>>> >>>>>>>>> 2010/10/29 Bernd Fehling <bernd.fehl...@uni-bielefeld.de>: >>>>>>>>>> Hi Jakub, >>>>>>>>>> >>>>>>>>>> I have ported the KStemmer for use in most recent Solr trunk version. >>>>>>>>>> My stemmer is located in the lib directory of Solr >>>>>>>>> "solr/lib/KStemmer-2.00.jar" >>>>>>>>>> because it belongs to Solr. >>>>>>>>>> >>>>>>>>>> Write it as FilterFactory and use it as Filter like: >>>>>>>>>> <filter class="de.ubbielefeld.solr.analysis.KStemFilterFactory" >>>>>>>>> protected="protwords.txt" /> >>>>>>>>>> >>>>>>>>>> This is how my fieldType looks like: >>>>>>>>>> >>>>>>>>>> <fieldType name="text_kstem" class="solr.TextField" >>>>>>>>> positionIncrementGap="100"> >>>>>>>>>> <analyzer type="index"> >>>>>>>>>> <tokenizer class="solr.WhitespaceTokenizerFactory" /> >>>>>>>>>> <filter class="solr.StopFilterFactory" ignoreCase="true" >>>>>>>>> words="stopwords.txt" enablePositionIncrements="false" /> >>>>>>>>>> <filter class="solr.WordDelimiterFilterFactory" >>>>>>>>> generateWordParts="1" generateNumberParts="1" catenateWords="1" >>>>>>>>> catenateNumbers="1" >>>>>>>>>> catenateAll="0" splitOnCaseChange="1" /> >>>>>>>>>> <filter class="solr.LowerCaseFilterFactory" /> >>>>>>>>>> <filter >>>>>>>>>> class="de.ubbielefeld.solr.analysis.KStemFilterFactory" >>>>>>>>> protected="protwords.txt" /> >>>>>>>>>> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> >>>>>>>>>> </analyzer> >>>>>>>>>> <analyzer type="query"> >>>>>>>>>> <tokenizer class="solr.WhitespaceTokenizerFactory" /> >>>>>>>>>> <filter class="solr.StopFilterFactory" ignoreCase="true" >>>>>>>>> words="stopwords.txt" /> >>>>>>>>>> <filter class="solr.WordDelimiterFilterFactory" >>>>>>>>> generateWordParts="1" generateNumberParts="1" catenateWords="0" >>>>>>>>> catenateNumbers="0" >>>>>>>>>> catenateAll="0" splitOnCaseChange="1" /> >>>>>>>>>> <filter class="solr.LowerCaseFilterFactory" /> >>>>>>>>>> <filter >>>>>>>>>> class="de.ubbielefeld.solr.analysis.KStemFilterFactory" >>>>>>>>> protected="protwords.txt" /> >>>>>>>>>> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> >>>>>>>>>> </analyzer> >>>>>>>>>> </fieldType> >>>>>>>>>> >>>>>>>>>> Regards, >>>>>>>>>> Bernd >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Am 28.10.2010 14:56, schrieb Jakub Godawa: >>>>>>>>>>> Hi! >>>>>>>>>>> There is a polish stemmer http://www.getopt.org/stempel/ and I have >>>>>>>>>>> problems connecting it with solr 1.4.1 >>>>>>>>>>> Questions: >>>>>>>>>>> >>>>>>>>>>> 1. Where EXACTLY do I put "stemper-1.0.jar" file? >>>>>>>>>>> 2. How do I register the file, so I can build a fieldType like: >>>>>>>>>>> >>>>>>>>>>> <fieldType name="text_pl" class="solr.TextField"> >>>>>>>>>>> <analyzer >>>>>>>>>>> class="org.geoopt.solr.analysis.StempelTokenFilterFactory"/> >>>>>>>>>>> </fieldType> >>>>>>>>>>> >>>>>>>>>>> 3. Is that the right approach to make it work? >>>>>>>>>>> >>>>>>>>>>> Thanks for verbose explanation, >>>>>>>>>>> Jakub. >>>> >>> >> >> >> >> -- >> Lance Norskog >> goks...@gmail.com >> > -- Lance Norskog goks...@gmail.com