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

Reply via email to