Author: ryan
Date: Mon Jan 7 09:42:42 2008
New Revision: 609717
URL: http://svn.apache.org/viewvc?rev=609717&view=rev
Log:
SOLR-281 -- only initialize search components that are not registered.
Modified:
lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
Modified: lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java?rev=609717&r1=609716&r2=609717&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java Mon Jan 7
09:42:42 2008
@@ -493,16 +493,31 @@
private static Map<String, SearchComponent> loadSearchComponents( SolrConfig
config )
{
Map<String, SearchComponent> components = new HashMap<String,
SearchComponent>();
- components.put( QueryComponent.COMPONENT_NAME, new QueryComponent()
);
- components.put( FacetComponent.COMPONENT_NAME, new FacetComponent()
);
- components.put( MoreLikeThisComponent.COMPONENT_NAME, new
MoreLikeThisComponent() );
- components.put( HighlightComponent.COMPONENT_NAME, new
HighlightComponent() );
- components.put( DebugComponent.COMPONENT_NAME, new DebugComponent()
);
String xpath = "searchComponent";
NamedListPluginLoader<SearchComponent> loader = new
NamedListPluginLoader<SearchComponent>( xpath, components );
loader.load( config.getResourceLoader(), (NodeList)config.evaluate( xpath,
XPathConstants.NODESET ) );
+ final Map<String,Class<? extends SearchComponent>> standardcomponents
+ = new HashMap<String, Class<? extends SearchComponent>>();
+ standardcomponents.put( QueryComponent.COMPONENT_NAME,
QueryComponent.class );
+ standardcomponents.put( FacetComponent.COMPONENT_NAME,
FacetComponent.class );
+ standardcomponents.put( MoreLikeThisComponent.COMPONENT_NAME,
MoreLikeThisComponent.class );
+ standardcomponents.put( HighlightComponent.COMPONENT_NAME,
HighlightComponent.class );
+ standardcomponents.put( DebugComponent.COMPONENT_NAME,
DebugComponent.class );
+ for( Map.Entry<String, Class<? extends SearchComponent>> entry :
standardcomponents.entrySet() ) {
+ if( components.get( entry.getKey() ) == null ) {
+ try {
+ SearchComponent comp = entry.getValue().newInstance();
+ comp.init( null ); // default components initialized with nothing
+ components.put( entry.getKey(), comp );
+ }
+ catch (Exception e) {
+ SolrConfig.severeErrors.add( e );
+ SolrException.logOnce(log,null,e);
+ }
+ }
+ }
return components;
}