Hi all !

I need a new feature in solr : to allow the configuration of the
IndexSearcher class in the schema configuration to override the lucene
IndexSearcher .
I noticed that there's only one point in the code where the searcher is built:

<code>
in org/apache/solr/search/SolrIndexSearcher.java:

 private SolrIndexSearcher(IndexSchema schema, String name,
IndexReader r, boolean closeReader, boolean enableCache) {
   this.schema = schema;
   this.name = "Searcher@" + Integer.toHexString(hashCode()) +
(name!=null ? " "+name : "");

   log.info("Opening " + this.name);

   reader = r;
/****** HERE *********/
  searcher = new IndexSearcher(r);
</code>

I'd like to allow a new tag in the schema :
<schema name="..." version="1.1">
 <luceneIndexSearcher class="com.acme.lucene.searcher.MyOwnSearcher" />
....
</schema>

I dont exactly know what is the best way to do it.
I was think of:

* In IndexSchema:

implement a method
String getLuceneIndexSearcherClassName()

* In SolrIndexSearcher
 in  private SolrIndexSearcher:

 String idxSearcherClassName = schema.getLuceneIndexSearcherClassName()
 // Then load the class itself
 // Then build a new instance of this class with the IndexReader r

What solr special class loader and instance builder do I have to use
to do the last two operation ?

Can I use directly :

Class idxSearcherClass = Config.findClass(idxSearcherClassName)

and then build a idxSearcher by using the standard java.lang.Class methods ?

Am I in the right and does it fit with the solr architecture to do that ?

I'd be perfectly happy to implement that and submit a patch.

Thanks for your comments and answers.

Jerome

--
Jerome Eteve.
[EMAIL PROTECTED]
http://jerome.eteve.free.fr/

Reply via email to