You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by no...@apache.org on 2009/06/10 08:24:18 UTC

svn commit: r783222 - in /lucene/solr/trunk/src: java/org/apache/solr/core/ java/org/apache/solr/highlight/ test/org/apache/solr/highlight/

Author: noble
Date: Wed Jun 10 06:24:17 2009
New Revision: 783222

URL: http://svn.apache.org/viewvc?rev=783222&view=rev
Log:
SOLR-1198 moved highlighter

Modified:
    lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java
    lucene/solr/trunk/src/java/org/apache/solr/core/SolrConfig.java
    lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
    lucene/solr/trunk/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
    lucene/solr/trunk/src/java/org/apache/solr/highlight/SolrHighlighter.java
    lucene/solr/trunk/src/test/org/apache/solr/highlight/DummyHighlighter.java

Modified: lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java?rev=783222&r1=783221&r2=783222&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java Wed Jun 10 06:24:17 2009
@@ -17,28 +17,21 @@
 
 package org.apache.solr.core;
 
-import java.net.URL;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.xml.xpath.XPathConstants;
-
-import org.apache.solr.common.ResourceLoader;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.util.DOMUtil;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.handler.StandardRequestHandler;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrQueryResponse;
 import org.apache.solr.request.SolrRequestHandler;
-import org.apache.solr.util.plugin.AbstractPluginLoader;
 import org.apache.solr.util.plugin.SolrCoreAware;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Node;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  */

Modified: lucene/solr/trunk/src/java/org/apache/solr/core/SolrConfig.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/SolrConfig.java?rev=783222&r1=783221&r2=783222&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/SolrConfig.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/SolrConfig.java Wed Jun 10 06:24:17 2009
@@ -175,6 +175,7 @@
      loadPluginInfo();
      updateProcessorChainInfo = loadUpdateProcessorInfo();
      updateHandlerInfo = loadUpdatehandlerInfo();
+     loadHighLightingPlugins();
 
     Config.log.info("Loaded SolrConfig: " + name);
     
@@ -182,6 +183,16 @@
     config = this;
   }
 
+  public String getHighLghtingClass() {
+    return highLghtingClass;
+  }
+
+  protected void loadHighLightingPlugins() {
+    highLghtingClass =  get("highlighting/@class",null);
+    highlightingFragmenterInfo = loadPluginInfo("highlighting/fragmenter",true);
+    highlightingFormatterInfo = loadPluginInfo("highlighting/formatter",true);
+  }
+
   protected UpdateHandlerInfo loadUpdatehandlerInfo() {
     return new UpdateHandlerInfo(get("updateHandler/@class",null),
             getInt("updateHandler/autoCommit/maxDocs",-1),
@@ -278,6 +289,8 @@
   protected List<PluginInfo> respWriterInfo;
   protected List<PluginInfo> valueSourceParserInfo;
   protected List<PluginInfo> searchComponentInfo;
+  protected List<PluginInfo> highlightingFragmenterInfo;
+  protected List<PluginInfo> highlightingFormatterInfo;
   protected List<PluginInfo> firstSearcherListenerInfo;
   protected PluginInfo deletionPolicyInfo;
   protected PluginInfo indexReaderFactoryInfo;
@@ -285,6 +298,7 @@
   protected PluginInfo directoryfactoryInfo;
   protected Map<String ,List<PluginInfo>> updateProcessorChainInfo ;
   protected UpdateHandlerInfo updateHandlerInfo ;
+  protected String highLghtingClass;
 
   public final int maxWarmingSearchers;
   public final boolean unlockOnStartup;
@@ -441,10 +455,10 @@
   }
 
   public static class PluginInfo {
-    final String startup, name, className;
-    final boolean isDefault;    
-    final NamedList initArgs;
-    final Map<String ,String> otherAttributes;
+    public final String startup, name, className;
+    public final boolean isDefault;
+    public final NamedList initArgs;
+    public final Map<String ,String> otherAttributes;
 
     public PluginInfo(String startup, String name, String className,
                       boolean isdefault, NamedList initArgs, Map<String ,String> otherAttrs) {
@@ -519,4 +533,8 @@
   public UpdateHandlerInfo getUpdateHandlerInfo() { return updateHandlerInfo; }
 
   public PluginInfo getIndexReaderFactoryInfo() { return indexReaderFactoryInfo; }
+
+  public List<PluginInfo> getHighlightingFormatterInfo() { return highlightingFormatterInfo; }
+
+  public List<PluginInfo> getHighlightingFragmenterInfo() { return highlightingFragmenterInfo; }
 }

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=783222&r1=783221&r2=783222&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 Wed Jun 10 06:24:17 2009
@@ -26,7 +26,6 @@
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.CommonParams.EchoParamStyle;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.DOMUtil;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.handler.admin.ShowFileRequestHandler;
@@ -46,19 +45,12 @@
 import org.apache.solr.update.processor.UpdateRequestProcessorChain;
 import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
 import org.apache.solr.util.RefCounted;
-import org.apache.solr.util.plugin.AbstractPluginLoader;
 import org.apache.solr.util.plugin.NamedListInitializedPlugin;
-import org.apache.solr.util.plugin.NamedListPluginLoader;
 import org.apache.solr.util.plugin.SolrCoreAware;
 import org.apache.commons.io.IOUtils;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 import org.xml.sax.SAXException;
 
 import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathExpressionException;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -543,10 +535,10 @@
     updateProcessorChains = loadUpdateProcessorChains();
     reqHandlers = new RequestHandlers(this);
     reqHandlers.initHandlersFromConfig( solrConfig );
+
+    String highLightClass = solrConfig.getHighLghtingClass();
   
-    highlighter = createHighlighter(
-    	  solrConfig.get("highlighting/@class", DefaultSolrHighlighter.class.getName())
-    );
+    highlighter = createHighlighter(highLightClass == null? DefaultSolrHighlighter.class.getName() : highLightClass);
     highlighter.initalize( solrConfig );
 
     // Handle things that should eventually go away
@@ -1462,7 +1454,7 @@
     }
   }
 
-  private <T> T initPlugins(List<SolrConfig.PluginInfo> pluginInfos , Map<String ,T> registry, Class<T> type){
+  public <T> T initPlugins(List<SolrConfig.PluginInfo> pluginInfos , Map<String ,T> registry, Class<T> type){
     T def = null;
     for (SolrConfig.PluginInfo info : pluginInfos) {
       T o = createInstance(info.className,type, type.getSimpleName());

Modified: lucene/solr/trunk/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java?rev=783222&r1=783221&r2=783222&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java Wed Jun 10 06:24:17 2009
@@ -21,17 +21,13 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ListIterator;
-import java.util.Map;
 import java.util.Set;
 
-import javax.xml.xpath.XPathConstants;
 
-import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.CachingTokenFilter;
 import org.apache.lucene.analysis.Token;
 import org.apache.lucene.analysis.TokenFilter;
@@ -40,19 +36,18 @@
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.highlight.*;
 import org.apache.solr.common.SolrException;
+import org.apache.solr.common.ResourceLoader;
 import org.apache.solr.common.params.HighlightParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.core.Config;
+import org.apache.solr.core.SolrConfig;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.DocIterator;
 import org.apache.solr.search.DocList;
 import org.apache.solr.search.SolrIndexSearcher;
-import org.apache.solr.util.plugin.NamedListPluginLoader;
-import org.w3c.dom.NodeList;
 
 /**
  * 
@@ -60,33 +55,42 @@
  */
 public class DefaultSolrHighlighter extends SolrHighlighter
 {
-  
-  public void initalize( final Config config )
-  {
+
+  public void initalize( SolrConfig config) {
     formatters.clear();
     fragmenters.clear();
-    
+
     // Load the fragmenters
-    String xpath = "highlighting/fragmenter";
-    NamedListPluginLoader<SolrFragmenter> fragloader = new NamedListPluginLoader<SolrFragmenter>( xpath, fragmenters );
-    SolrFragmenter frag = fragloader.load( config.getResourceLoader(), (NodeList)config.evaluate( xpath, XPathConstants.NODESET ) );
+    ResourceLoader loader= config.getResourceLoader();
+    SolrFragmenter frag = null;
+    for (SolrConfig.PluginInfo info : config.getHighlightingFragmenterInfo()) {
+      SolrFragmenter fragmenter = (SolrFragmenter) loader.newInstance(info.className);
+      fragmenter.init(info.initArgs);
+      if(info.isDefault) frag = fragmenter;
+      fragmenters.put(info.name,fragmenter);
+    }
+
     if( frag == null ) {
       frag = new GapFragmenter();
     }
     fragmenters.put( "", frag );
     fragmenters.put( null, frag );
-    
     // Load the formatters
-    xpath = "highlighting/formatter";
-    NamedListPluginLoader<SolrFormatter> fmtloader = new NamedListPluginLoader<SolrFormatter>( xpath, formatters );
-    SolrFormatter fmt = fmtloader.load( config.getResourceLoader(), (NodeList)config.evaluate( xpath, XPathConstants.NODESET ) );
+    SolrFormatter fmt = null;
+    for (SolrConfig.PluginInfo info : config.getHighlightingFormatterInfo()) {
+      SolrFormatter formatter = (SolrFormatter) loader.newInstance(info.className);
+      formatter.init(info.initArgs);
+      formatters.put(info.name, formatter);
+      if(info.isDefault) fmt = formatter;
+    }
     if( fmt == null ) {
       fmt = new HtmlFormatter();
     }
     formatters.put( "", fmt );
     formatters.put( null, fmt );
+
   }
-  
+
   /**
    * Return a phrase Highlighter appropriate for this field.
    * @param query The current Query

Modified: lucene/solr/trunk/src/java/org/apache/solr/highlight/SolrHighlighter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/highlight/SolrHighlighter.java?rev=783222&r1=783221&r2=783222&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/highlight/SolrHighlighter.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/highlight/SolrHighlighter.java Wed Jun 10 06:24:17 2009
@@ -30,7 +30,7 @@
 import org.apache.solr.common.params.HighlightParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.Config;
+import org.apache.solr.core.SolrConfig;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.DocList;
 import org.apache.solr.util.SolrPluginUtils;
@@ -46,8 +46,7 @@
   // Thread safe registry
   protected final Map<String,SolrFragmenter> fragmenters =
     Collections.synchronizedMap( new HashMap<String, SolrFragmenter>() );
-
-  public abstract void initalize( final Config config );
+  public abstract void initalize( SolrConfig config );
 
 
   /**

Modified: lucene/solr/trunk/src/test/org/apache/solr/highlight/DummyHighlighter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/highlight/DummyHighlighter.java?rev=783222&r1=783221&r2=783222&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/highlight/DummyHighlighter.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/highlight/DummyHighlighter.java Wed Jun 10 06:24:17 2009
@@ -5,7 +5,7 @@
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.core.Config;
+import org.apache.solr.core.SolrConfig;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.DocList;
 
@@ -20,7 +20,7 @@
 	}
 
 	@Override
-	public void initalize(Config config) {
+	public void initalize(SolrConfig config) {
 		// do nothing
 	}