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
}