I was finally given the go-ahead to upgrade from Solr 1.2 to 1.3 in our environment here at work now that 1.3 is final. However I'm running into a couple problems that I'm having trouble finding solutions to.
First, I've added a class to our Solr distribution that extends StandardRequestHandler. In particular it overrides getFacetInfo and uses this to compute some aggregate values. Here's my code: protected NamedList getFacetInfo(SolrQueryRequest req, SolrQueryResponse rsp, DocSet mainSet) { // Call the super class to get it's response first NamedList res = super.getFacetInfo(req, rsp, mainSet); // Now calculate all sums NamedList aggregates = new NamedList(); try { aggregates.addAll(this.computeSums(req, mainSet)); aggregates.addAll(this.computeAverages(req, mainSet)); } catch (IOException e) { e.printStackTrace(); SolrException.logOnce(SolrCore.log, "Exception during aggregate value calculations", e); return res; } // add the aggregate fields to the response res.add("facet_aggregates", aggregates); return res; } However now StandardRequestHandler doesn't seem to implement the getFacetInfo() method anymore. Did this method move to another class somewhere? Or do I need to just do this aggregate stuff in a totally different way in 1.3? Second, I've got some code running in the same JVM as Solr that does some stuff like getting the latest timestamp in the index to determine if we need to pull an update from our product info database, kicking off an optimize every night at 2:00AM, stuff like that. However I take it that this line won't work anymore due to the multicore stuff: SolrCore core = SolrCore.getSolrCore(); That's fine, but how do I get a handle to the SolrCore intance(s) now? The SolrCore.getSolrCore method was static, the method in CoreContainer that replaces it is not static, so how, by just being in the same JVM, can a class get access to the CoreContainer? The only other thing I'm seeing is some deprecation messages using the FieldType.getValueSource(SchemaField field) method. The source looks like this: /** called to get the default value source (normally, from the * Lucene FieldCache.) */ public ValueSource getValueSource(SchemaField field, QParser parser) { return getValueSource(field); } /** * @deprecated use [EMAIL PROTECTED] #getValueSource(SchemaField, QParser)} */ @Deprecated public ValueSource getValueSource(SchemaField field) { return new OrdFieldSource(field.name); } Which I find a little funny. Don't use this deprecated method, use this other method instead, which immediately throws away the extra parameter and just calls the deprecated method anyway? Thanks in advance for any help you can provide. -- Mark Baird