Hi, I am looking at extending the source code for SolrIndexSearcher for my own purposes. Basically, I am trying to replace the use of Lucene's IndexSearcher with a ParallelMultiSearcher version so that I can have a query search both locally available indexes as well as remote indexes available only via RMI. This ParallelMultiSearcher is instantiated to consist of both local and remote Searchable references. The local Searchables are simply IndexSearcher instances tied to local disk (separate indexes), while the remote Searchables are made reachable via RMI.
In essence, where it used to be: IndexSearcher searcher = new IndexSearcher(reader); it is now: (not the actual code but similar) Searchable[] searchables = new Searchable[3]; for (int i=0; i<2; i++) { // Local searchable: searchables[i] = new IndexSearcher("/disk" + i + "/index"); } // RMI searchable: throws exception during search.. searchables[2] = (Searchable) Naming.lookup ("//remote_host:1099/remote_svc"); ParallelMultiSearcher searcher = new ParallelMultiSearcher(sch); When I build the source and use it (the short story, by replacing the relevant class file(s) within solr.war used by the example jetty implementation), it starts up just fine. If I comment out the RMI searchable line, submission of a search query to Jetty/Solr works just fine, and it is able to search any number of indexes. However, with the RMI searchable uncommented out, I get an exception thrown (here's the ending of it): May 9, 2006 1:38:07 AM org.apache.solr.core.SolrException log SEVERE: java.rmi.MarshalException: error marshalling arguments; nested exception is: java.io.NotSerializableException: org.apache.lucene.search.MultiSearcher$1 at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122) at org.apache.lucene.search.RemoteSearchable_Stub.search(Unknown Source) at org.apache.lucene.search.MultiSearcher.search(MultiSearcher.java :248) at org.apache.lucene.search.Searcher.search(Searcher.java:116) at org.apache.lucene.search.Searcher.search(Searcher.java:95) at org.apache.solr.search.SolrIndexSearcher.getDocListNC( SolrIndexSearcher.java:794) at org.apache.solr.search.SolrIndexSearcher.getDocListC( SolrIndexSearcher.java:712) at org.apache.solr.search.SolrIndexSearcher.getDocList( SolrIndexSearcher.java:605) at org.apache.solr.request.StandardRequestHandler.handleRequest( StandardRequestHandler.java:106) So it looks like it requires Serialization somehow to get it to work. Wondering if anyone has any ideas to get around this problem. tia, Koji