You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by mark angelillo <li...@snooth.com> on 2007/04/09 18:08:05 UTC
Error loading custom similarity class
Hiya,
I'm currently trying to compile and load my own similarity class in
Solr, and I'm having a bit of a problem. Here's what I've done so far:
1) Create the .java for the class using SweetSpotSimilarity as a
model. I'm using the code below to make sure I can get this working
-- my real class will do something a bit different.
.....
package org.apache.lucene.misc;
import org.apache.lucene.search.Similarity;
import org.apache.lucene.search.DefaultSimilarity;
public class CustomSimilarity extends DefaultSimilarity {
public CustomSimilarity() {
super();
}
public float lengthNorm(String fieldName, int numTerms) {
return (float)1.0;
}
public float tf(int freq) {
return (float)1.0;
}
}
.....
2) Create the .jar file. (Maybe I'm doing this wrong?)
> javac classpath lucene-core-nightly.jar CustomSimilarity.java
> jar -cvf CustomSimilarity.jar CustomSimilarity.class
3) Put the .jar file in my solr home /lib directory. (/var/solr/lib
for me)
4) Edit schema.xml with this line:
<similarity class="org.apache.lucene.misc.CustomSimilarity"/>
5) I'm using Jetty, and read that I may need to ensure the .jar is in
the classpath, so I added this to start.config (I've tried with and
without this):
# solr specific jars
/var/solr/lib/CustomSimilarity.jar always
Then, when I fire up Jetty, I get the following error:
10:59:01.885 WARN!! [main] org.mortbay.jetty.Server.main(Server.java:
465) >08> EXCEPTION
org.mortbay.util.MultiException[org.apache.solr.core.SolrException:
Error loading class 'org.apache.lucene.misc.CustomSimilarity']
at org.mortbay.http.HttpServer.doStart(HttpServer.java:686)
at org.mortbay.util.Container.start(Container.java:72)
at org.mortbay.jetty.Server.main(Server.java:460)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.mortbay.start.Main.invokeMain(Main.java:151)
at org.mortbay.start.Main.start(Main.java:476)
at org.mortbay.start.Main.main(Main.java:94)
org.apache.solr.core.SolrException: Error loading class
'org.apache.lucene.misc.CustomtSimilarity'
at org.apache.solr.core.Config.findClass(Config.java:208)
at org.apache.solr.core.Config.newInstance(Config.java:213)
at org.apache.solr.schema.IndexSchema.readConfig
(IndexSchema.java:363)
at org.apache.solr.schema.IndexSchema.<init>
(IndexSchema.java:69)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:191)
at org.apache.solr.core.SolrCore.getSolrCore(SolrCore.java:172)
at org.apache.solr.servlet.SolrServlet.init(SolrServlet.java:
72)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.mortbay.jetty.servlet.ServletHolder.initServlet
(ServletHolder.java:383)
at org.mortbay.jetty.servlet.ServletHolder.start
(ServletHolder.java:243)
at
org.mortbay.jetty.servlet.ServletHandler.initializeServlets
(ServletHandler.java:446)
at
org.mortbay.jetty.servlet.WebApplicationHandler.initializeServlets
(WebApplicationHandler.java:321)
at org.mortbay.jetty.servlet.WebApplicationContext.doStart
(WebApplicationContext.java:509)
at org.mortbay.util.Container.start(Container.java:72)
at org.mortbay.http.HttpServer.doStart(HttpServer.java:708)
at org.mortbay.util.Container.start(Container.java:72)
at org.mortbay.jetty.Server.main(Server.java:460)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.mortbay.start.Main.invokeMain(Main.java:151)
at org.mortbay.start.Main.start(Main.java:476)
at org.mortbay.start.Main.main(Main.java:94)
Caused by: java.lang.ClassNotFoundException:
org.apache.lucene.misc.CustomSimilarity
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.net.FactoryURLClassLoader.loadClass
(URLClassLoader.java:580)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at org.apache.solr.core.Config.findClass(Config.java:192)
... 23 more
[0]=org.apache.solr.core.SolrException: Error loading class
'org.apache.lucene.misc.CustomSimilarity'
at org.apache.solr.core.Config.findClass(Config.java:208)
at org.apache.solr.core.Config.newInstance(Config.java:213)
at org.apache.solr.schema.IndexSchema.readConfig
(IndexSchema.java:363)
at org.apache.solr.schema.IndexSchema.<init>
(IndexSchema.java:69)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:191)
at org.apache.solr.core.SolrCore.getSolrCore(SolrCore.java:172)
at org.apache.solr.servlet.SolrServlet.init(SolrServlet.java:
72)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.mortbay.jetty.servlet.ServletHolder.initServlet
(ServletHolder.java:383)
at org.mortbay.jetty.servlet.ServletHolder.start
(ServletHolder.java:243)
at
org.mortbay.jetty.servlet.ServletHandler.initializeServlets
(ServletHandler.java:446)
at
org.mortbay.jetty.servlet.WebApplicationHandler.initializeServlets
(WebApplicationHandler.java:321)
at org.mortbay.jetty.servlet.WebApplicationContext.doStart
(WebApplicationContext.java:509)
at org.mortbay.util.Container.start(Container.java:72)
at org.mortbay.http.HttpServer.doStart(HttpServer.java:708)
at org.mortbay.util.Container.start(Container.java:72)
at org.mortbay.jetty.Server.main(Server.java:460)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.mortbay.start.Main.invokeMain(Main.java:151)
at org.mortbay.start.Main.start(Main.java:476)
at org.mortbay.start.Main.main(Main.java:94)
Caused by: java.lang.ClassNotFoundException:
org.apache.lucene.misc.CustomSimilarity
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.net.FactoryURLClassLoader.loadClass
(URLClassLoader.java:580)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at org.apache.solr.core.Config.findClass(Config.java:192)
... 23 more
I'm can't where my failure point could be. Any help would be greatly
appreciated!
Mark
Re: Error loading custom similarity class
Posted by mark angelillo <li...@snooth.com>.
Thanks, Yonik. I was definitely missing that.
On Apr 9, 2007, at 2:08 PM, Yonik Seeley wrote:
> On 4/9/07, mark angelillo <li...@snooth.com> wrote:
>> package org.apache.lucene.misc;
>
> [...]
>> 2) Create the .jar file. (Maybe I'm doing this wrong?)
>>
>> > javac classpath lucene-core-nightly.jar CustomSimilarity.java
>> > jar -cvf CustomSimilarity.jar CustomSimilarity.class
>
> This may be the problem. The path in the jar file needs to reflect
> the package.
> So the CustomSimilarity.class file needs to be in the org/apache/
> lucene/misc/
> directory.
>
> -Yonik
Re: Error loading custom similarity class
Posted by Yonik Seeley <yo...@apache.org>.
On 4/9/07, mark angelillo <li...@snooth.com> wrote:
> package org.apache.lucene.misc;
[...]
> 2) Create the .jar file. (Maybe I'm doing this wrong?)
>
> > javac classpath lucene-core-nightly.jar CustomSimilarity.java
> > jar -cvf CustomSimilarity.jar CustomSimilarity.class
This may be the problem. The path in the jar file needs to reflect the package.
So the CustomSimilarity.class file needs to be in the org/apache/lucene/misc/
directory.
-Yonik