This really seems like an XY problem, here's Hoss's take on that: Your question appears to be an "XY Problem" ... that is: you are dealing with "X", you are assuming "Y" will help you, and you are asking about "Y" without giving more details about the "X" so that we can understand the full issue. Perhaps the best solution doesn't involve "Y" at all? See Also: http://www.perlmonks.org/index.pl?node_id=542341
_Why_ do you want to do this? Are you just trying to do some work on 5.0? In which case just build the entire project. You will not be able to just drop the 5.0 jar in to a 4.x Solr and expect it to work, the APIs have changed etc. Which is apparently what you're trying to do evidenced by these lines: Caused by: java.lang.IllegalArgumentException: An SPI class of type org.apache.lucene.codecs.Codec with name 'Lucene50' does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath. The current classpath supports the following names: [Lucene40, Lucene41, Lucene42, Lucene45, Lucene46, Lucene49, Lucene410, SimpleText] If you need to make changes to an existing 4.10 installation, pull down the 4.10 source code and work from _that_, which you can do with something like: svn checkout https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_10. Best, Erick On Sun, Mar 8, 2015 at 9:49 PM, Andrew Jie Zhou <jz...@georgetown.edu> wrote: > Hi, all, > > I want to compile lucene-core-5.0.0.jar and add it to Solr's library. > What I do is, > 1. Create a new java project, > 2. Copy source code of Lucene core into the project, > 3. Export a jar, > 4. Replace the jar in Solr. > > The log is: > INFO - 2015-03-09 04:01:56.384; org.eclipse.jetty.server.Server; > jetty-8.1.10.v20130312 > INFO - 2015-03-09 04:01:56.417; > org.eclipse.jetty.deploy.providers.ScanningAppProvider; Deployment monitor > /Users/jie/Documents/data/infosense/dumpling/solr/server/contexts at > interval 0 > INFO - 2015-03-09 04:01:56.423; > org.eclipse.jetty.deploy.DeploymentManager; Deployable added: > /Users/jie/Documents/data/infosense/dumpling/solr/server/contexts/solr-jetty-context.xml > INFO - 2015-03-09 04:01:57.515; > org.eclipse.jetty.webapp.StandardDescriptorProcessor; NO JSP Support for > /solr, did not find org.apache.jasper.servlet.JspServlet > INFO - 2015-03-09 04:01:57.570; > org.apache.solr.servlet.SolrDispatchFilter; > SolrDispatchFilter.init()WebAppClassLoader=712256162@2a742aa2 > INFO - 2015-03-09 04:01:57.581; org.apache.solr.core.SolrResourceLoader; > JNDI not configured for solr (NoInitialContextEx) > INFO - 2015-03-09 04:01:57.582; org.apache.solr.core.SolrResourceLoader; > using system property solr.solr.home: > /Users/jie/Documents/data/infosense/dumpling/solr/server/solr > INFO - 2015-03-09 04:01:57.584; org.apache.solr.core.SolrResourceLoader; > new SolrResourceLoader for directory: > '/Users/jie/Documents/data/infosense/dumpling/solr/server/solr/' > ERROR - 2015-03-09 04:01:57.680; > org.apache.solr.servlet.SolrDispatchFilter; Could not start Solr. Check > solr/home property and the logs > ERROR - 2015-03-09 04:01:57.702; org.apache.solr.common.SolrException; > null:java.lang.ExceptionInInitializerError > at > org.apache.solr.core.SolrResourceLoader.reloadLuceneSPI(SolrResourceLoader.java:208) > at > org.apache.solr.core.SolrResourceLoader.<init>(SolrResourceLoader.java:144) > at > org.apache.solr.core.SolrResourceLoader.<init>(SolrResourceLoader.java:258) > at > org.apache.solr.servlet.SolrDispatchFilter.createCoreContainer(SolrDispatchFilter.java:179) > at > org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:129) > at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) > at > org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) > at > org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1252) > at > org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) > at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39) > at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186) > at > org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494) > at > org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56) > at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609) > at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540) > at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403) > at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555) > at > org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81) > at > org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) > at > org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96) > at org.eclipse.jetty.server.Server.doStart(Server.java:280) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1259) > at java.security.AccessController.doPrivileged(Native Method) > at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1182) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at org.eclipse.jetty.start.Main.invokeMain(Main.java:473) > at org.eclipse.jetty.start.Main.start(Main.java:615) > at org.eclipse.jetty.start.Main.main(Main.java:96) > Caused by: java.lang.IllegalArgumentException: An SPI class of type > org.apache.lucene.codecs.Codec with name 'Lucene50' does not exist. You > need to add the corresponding JAR file supporting this SPI to your > classpath. The current classpath supports the following names: [Lucene40, > Lucene41, Lucene42, Lucene45, Lucene46, Lucene49, Lucene410, SimpleText] > at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:109) > at org.apache.lucene.codecs.Codec.forName(Codec.java:98) > at org.apache.lucene.codecs.Codec.<clinit>(Codec.java:125) > ... 44 more > > WARN - 2015-03-09 04:01:57.703; > org.eclipse.jetty.util.component.AbstractLifeCycle; FAILED > SolrRequestFilter: java.lang.ExceptionInInitializerError > java.lang.ExceptionInInitializerError > at > org.apache.solr.core.SolrResourceLoader.reloadLuceneSPI(SolrResourceLoader.java:208) > at > org.apache.solr.core.SolrResourceLoader.<init>(SolrResourceLoader.java:144) > at > org.apache.solr.core.SolrResourceLoader.<init>(SolrResourceLoader.java:258) > at > org.apache.solr.servlet.SolrDispatchFilter.createCoreContainer(SolrDispatchFilter.java:179) > at > org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:129) > at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) > at > org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) > at > org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1252) > at > org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) > at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39) > at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186) > at > org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494) > at > org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56) > at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609) > at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540) > at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403) > at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555) > at > org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81) > at > org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) > at > org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96) > at org.eclipse.jetty.server.Server.doStart(Server.java:280) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1259) > at java.security.AccessController.doPrivileged(Native Method) > at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1182) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at org.eclipse.jetty.start.Main.invokeMain(Main.java:473) > at org.eclipse.jetty.start.Main.start(Main.java:615) > at org.eclipse.jetty.start.Main.main(Main.java:96) > Caused by: java.lang.IllegalArgumentException: An SPI class of type > org.apache.lucene.codecs.Codec with name 'Lucene50' does not exist. You > need to add the corresponding JAR file supporting this SPI to your > classpath. The current classpath supports the following names: [Lucene40, > Lucene41, Lucene42, Lucene45, Lucene46, Lucene49, Lucene410, SimpleText] > at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:109) > at org.apache.lucene.codecs.Codec.forName(Codec.java:98) > at org.apache.lucene.codecs.Codec.<clinit>(Codec.java:125) > ... 44 more > WARN - 2015-03-09 04:01:57.707; > org.eclipse.jetty.util.component.AbstractLifeCycle; FAILED > o.e.j.w.WebAppContext{/solr,file:/Users/jie/Documents/data/infosense/dumpling/solr/server/solr-webapp/webapp/},/Users/jie/Documents/data/infosense/dumpling/solr/server/webapps/solr.war: > java.lang.ExceptionInInitializerError > java.lang.ExceptionInInitializerError > at > org.apache.solr.core.SolrResourceLoader.reloadLuceneSPI(SolrResourceLoader.java:208) > at > org.apache.solr.core.SolrResourceLoader.<init>(SolrResourceLoader.java:144) > at > org.apache.solr.core.SolrResourceLoader.<init>(SolrResourceLoader.java:258) > at > org.apache.solr.servlet.SolrDispatchFilter.createCoreContainer(SolrDispatchFilter.java:179) > at > org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:129) > at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) > at > org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) > at > org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1252) > at > org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) > at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39) > at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186) > at > org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494) > at > org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56) > at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609) > at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540) > at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403) > at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555) > at > org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81) > at > org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) > at > org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96) > at org.eclipse.jetty.server.Server.doStart(Server.java:280) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1259) > at java.security.AccessController.doPrivileged(Native Method) > at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1182) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at org.eclipse.jetty.start.Main.invokeMain(Main.java:473) > at org.eclipse.jetty.start.Main.start(Main.java:615) > at org.eclipse.jetty.start.Main.main(Main.java:96) > Caused by: java.lang.IllegalArgumentException: An SPI class of type > org.apache.lucene.codecs.Codec with name 'Lucene50' does not exist. You > need to add the corresponding JAR file supporting this SPI to your > classpath. The current classpath supports the following names: [Lucene40, > Lucene41, Lucene42, Lucene45, Lucene46, Lucene49, Lucene410, SimpleText] > at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:109) > at org.apache.lucene.codecs.Codec.forName(Codec.java:98) > at org.apache.lucene.codecs.Codec.<clinit>(Codec.java:125) > ... 44 more > WARN - 2015-03-09 04:01:57.709; > org.eclipse.jetty.deploy.DeploymentManager; Unable to reach node goal: > started > java.lang.ExceptionInInitializerError > at > org.apache.solr.core.SolrResourceLoader.reloadLuceneSPI(SolrResourceLoader.java:208) > at > org.apache.solr.core.SolrResourceLoader.<init>(SolrResourceLoader.java:144) > at > org.apache.solr.core.SolrResourceLoader.<init>(SolrResourceLoader.java:258) > at > org.apache.solr.servlet.SolrDispatchFilter.createCoreContainer(SolrDispatchFilter.java:179) > at > org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:129) > at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) > at > org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) > at > org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1252) > at > org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) > at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39) > at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186) > at > org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494) > at > org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56) > at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609) > at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540) > at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403) > at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555) > at > org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at > org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81) > at > org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) > at > org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96) > at org.eclipse.jetty.server.Server.doStart(Server.java:280) > at > org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) > at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1259) > at java.security.AccessController.doPrivileged(Native Method) > at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1182) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at org.eclipse.jetty.start.Main.invokeMain(Main.java:473) > at org.eclipse.jetty.start.Main.start(Main.java:615) > at org.eclipse.jetty.start.Main.main(Main.java:96) > Caused by: java.lang.IllegalArgumentException: An SPI class of type > org.apache.lucene.codecs.Codec with name 'Lucene50' does not exist. You > need to add the corresponding JAR file supporting this SPI to your > classpath. The current classpath supports the following names: [Lucene40, > Lucene41, Lucene42, Lucene45, Lucene46, Lucene49, Lucene410, SimpleText] > at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:109) > at org.apache.lucene.codecs.Codec.forName(Codec.java:98) > at org.apache.lucene.codecs.Codec.<clinit>(Codec.java:125) > ... 44 more > INFO - 2015-03-09 04:01:57.717; > org.eclipse.jetty.server.AbstractConnector; Started > SocketConnector@0.0.0.0:8983 > > I need to modify the code in solr-core.jar and lucene-core-5.0.0.jar. > I replaced solr-core.jar successfully, but failed at lucene-core-5.0.0.jar. > Please let me know your thoughts. Thanks! > > Cheers, > Andrew --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org