You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ko...@apache.org on 2010/08/07 13:34:40 UTC
svn commit: r983212 - in /lucene/dev/trunk/solr: ./ example/solr/conf/
src/common/org/apache/solr/common/params/ src/java/org/apache/solr/highlight/
Author: koji
Date: Sat Aug 7 11:34:39 2010
New Revision: 983212
URL: http://svn.apache.org/viewvc?rev=983212&view=rev
Log:
FVH uses SolrEncoder
Removed:
lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/MultiColoredScoreOrderFragmentsBuilder.java
lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/MultiColoredSimpleFragmentsBuilder.java
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml
lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/HighlightParams.java
lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/ScoreOrderFragmentsBuilder.java
lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SimpleFragmentsBuilder.java
lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=983212&r1=983211&r2=983212&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Sat Aug 7 11:34:39 2010
@@ -222,6 +222,8 @@ New Features
* SOLR-2021: Add SolrEncoder plugin to Highlighter. (koji)
+* SOLR-2030: Make FastVectorHighlighter use of SolrEncoder. (koji)
+
Optimizations
----------------------
Modified: lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml?rev=983212&r1=983211&r2=983212&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml Sat Aug 7 11:34:39 2010
@@ -1018,8 +1018,21 @@
<!-- Configure the single fragListBuilder -->
<fragListBuilder name="single" class="org.apache.solr.highlight.SingleFragListBuilder"/>
+ <!-- default tag FragmentsBuilder -->
+ <fragmentsBuilder name="default" class="org.apache.solr.highlight.ScoreOrderFragmentsBuilder" default="true"/>
+
<!-- multi-colored tag FragmentsBuilder -->
- <fragmentsBuilder name="colored" class="org.apache.solr.highlight.MultiColoredScoreOrderFragmentsBuilder" default="true"/>
+ <fragmentsBuilder name="colored" class="org.apache.solr.highlight.ScoreOrderFragmentsBuilder">
+ <lst name="defaults">
+ <str name="hl.tag.pre"><![CDATA[
+ <b style="background:yellow">,<b style="background:lawgreen">,
+ <b style="background:aquamarine">,<b style="background:magenta">,
+ <b style="background:palegreen">,<b style="background:coral">,
+ <b style="background:wheat">,<b style="background:khaki">,
+ <b style="background:lime">,<b style="background:deepskyblue">]]></str>
+ <str name="hl.tag.post"><![CDATA[</b>]]></str>
+ </lst>
+ </fragmentsBuilder>
</highlighting>
</searchComponent>
Modified: lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/HighlightParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/HighlightParams.java?rev=983212&r1=983211&r2=983212&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/HighlightParams.java (original)
+++ lucene/dev/trunk/solr/src/common/org/apache/solr/common/params/HighlightParams.java Sat Aug 7 11:34:39 2010
@@ -42,7 +42,9 @@ public interface HighlightParams {
public static final String MERGE_CONTIGUOUS_FRAGMENTS = HIGHLIGHT + ".mergeContiguous";
- public static final String USE_FVH = HIGHLIGHT + ".useFastVectorHighlighter";
+ public static final String USE_FVH = HIGHLIGHT + ".useFastVectorHighlighter";
+ public static final String TAG_PRE = HIGHLIGHT + ".tag.pre";
+ public static final String TAG_POST = HIGHLIGHT + ".tag.post";
// Formatter
public static final String SIMPLE = "simple";
Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java?rev=983212&r1=983211&r2=983212&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java Sat Aug 7 11:34:39 2010
@@ -311,12 +311,16 @@ public class DefaultSolrHighlighter exte
}
protected FragmentsBuilder getFragmentsBuilder( SolrParams params ){
+ return getSolrFragmentsBuilder( params ).getFragmentsBuilder( params );
+ }
+
+ private SolrFragmentsBuilder getSolrFragmentsBuilder( SolrParams params ){
String fb = params.get( HighlightParams.FRAGMENTS_BUILDER );
SolrFragmentsBuilder solrFb = fragmentsBuilders.get( fb );
if( solrFb == null ){
throw new SolrException( SolrException.ErrorCode.BAD_REQUEST, "Unknown fragmentsBuilder: " + fb );
}
- return solrFb.getFragmentsBuilder( params );
+ return solrFb;
}
/**
@@ -361,6 +365,7 @@ public class DefaultSolrHighlighter exte
getFragListBuilder( params ),
getFragmentsBuilder( params ) );
FieldQuery fieldQuery = fvh.getFieldQuery( query );
+ SolrFragmentsBuilder solrFb = getSolrFragmentsBuilder( params );
// Highlight each document
DocIterator iterator = docs.iterator();
@@ -371,7 +376,7 @@ public class DefaultSolrHighlighter exte
for (String fieldName : fieldNames) {
fieldName = fieldName.trim();
if( useFastVectorHighlighter( params, schema, fieldName ) )
- doHighlightingByFastVectorHighlighter( fvh, fieldQuery, req, docSummaries, docId, doc, fieldName );
+ doHighlightingByFastVectorHighlighter( fvh, fieldQuery, solrFb, req, docSummaries, docId, doc, fieldName );
else
doHighlightingByHighlighter( query, req, docSummaries, docId, doc, fieldName );
}
@@ -499,11 +504,15 @@ public class DefaultSolrHighlighter exte
}
private void doHighlightingByFastVectorHighlighter( FastVectorHighlighter highlighter, FieldQuery fieldQuery,
- SolrQueryRequest req, NamedList docSummaries, int docId, Document doc, String fieldName ) throws IOException {
+ SolrFragmentsBuilder solrFb, SolrQueryRequest req, NamedList docSummaries, int docId, Document doc,
+ String fieldName ) throws IOException {
SolrParams params = req.getParams();
String[] snippets = highlighter.getBestFragments( fieldQuery, req.getSearcher().getReader(), docId, fieldName,
params.getFieldInt( fieldName, HighlightParams.FRAGSIZE, 100 ),
- params.getFieldInt( fieldName, HighlightParams.SNIPPETS, 1 ) );
+ params.getFieldInt( fieldName, HighlightParams.SNIPPETS, 1 ),
+ solrFb.getPreTags( params, fieldName ),
+ solrFb.getPostTags( params, fieldName ),
+ getEncoder( fieldName, params ) );
if( snippets != null && snippets.length > 0 )
docSummaries.add( fieldName, snippets );
else
Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/ScoreOrderFragmentsBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/ScoreOrderFragmentsBuilder.java?rev=983212&r1=983211&r2=983212&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/ScoreOrderFragmentsBuilder.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/ScoreOrderFragmentsBuilder.java Sat Aug 7 11:34:39 2010
@@ -18,19 +18,13 @@
package org.apache.solr.highlight;
import org.apache.lucene.search.vectorhighlight.FragmentsBuilder;
-import org.apache.solr.common.params.DefaultSolrParams;
-import org.apache.solr.common.params.SolrParams;
-public class ScoreOrderFragmentsBuilder extends HighlightingPluginBase
- implements SolrFragmentsBuilder {
+public class ScoreOrderFragmentsBuilder extends SolrFragmentsBuilder {
- public FragmentsBuilder getFragmentsBuilder(SolrParams params) {
- numRequests++;
- if( defaults != null ) {
- params = new DefaultSolrParams( params, defaults );
- }
-
- return new org.apache.lucene.search.vectorhighlight.ScoreOrderFragmentsBuilder();
+ @Override
+ protected FragmentsBuilder getFragmentsBuilder(String[] preTags,
+ String[] postTags) {
+ return new org.apache.lucene.search.vectorhighlight.ScoreOrderFragmentsBuilder( preTags, postTags );
}
///////////////////////////////////////////////////////////////////////
Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SimpleFragmentsBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SimpleFragmentsBuilder.java?rev=983212&r1=983211&r2=983212&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SimpleFragmentsBuilder.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SimpleFragmentsBuilder.java Sat Aug 7 11:34:39 2010
@@ -18,21 +18,19 @@
package org.apache.solr.highlight;
import org.apache.lucene.search.vectorhighlight.FragmentsBuilder;
-import org.apache.solr.common.params.DefaultSolrParams;
-import org.apache.solr.common.params.SolrParams;
-public class SimpleFragmentsBuilder extends HighlightingPluginBase implements
- SolrFragmentsBuilder {
+public class SimpleFragmentsBuilder extends SolrFragmentsBuilder {
- public FragmentsBuilder getFragmentsBuilder(SolrParams params) {
- numRequests++;
- if( defaults != null ) {
- params = new DefaultSolrParams( params, defaults );
- }
-
- return new org.apache.lucene.search.vectorhighlight.SimpleFragmentsBuilder();
+ @Override
+ protected FragmentsBuilder getFragmentsBuilder(String[] preTags,
+ String[] postTags) {
+ return new org.apache.lucene.search.vectorhighlight.SimpleFragmentsBuilder( preTags, postTags );
}
+ ///////////////////////////////////////////////////////////////////////
+ //////////////////////// SolrInfoMBeans methods ///////////////////////
+ ///////////////////////////////////////////////////////////////////////
+
@Override
public String getDescription() {
return "SimpleFragmentsBuilder";
Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java?rev=983212&r1=983211&r2=983212&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/highlight/SolrFragmentsBuilder.java Sat Aug 7 11:34:39 2010
@@ -18,26 +18,53 @@
package org.apache.solr.highlight;
import org.apache.lucene.search.vectorhighlight.FragmentsBuilder;
+import org.apache.solr.common.params.DefaultSolrParams;
+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.SolrInfoMBean;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
-public interface SolrFragmentsBuilder extends SolrInfoMBean, NamedListInitializedPlugin {
-
- /** <code>init</code> will be called just once, immediately after creation.
- * <p>The args are user-level initialization parameters that
- * may be specified when declaring a request handler in
- * solrconfig.xml
- */
- public void init( NamedList args);
+public abstract class SolrFragmentsBuilder extends HighlightingPluginBase
+ implements SolrInfoMBean, NamedListInitializedPlugin {
+
+ public static final String DEFAULT_PRE_TAGS = "<em>";
+ public static final String DEFAULT_POST_TAGS = "</em>";
/**
- * Return a FragmentsBuilder appropriate for this field.
+ * Return a {@link org.apache.lucene.search.vectorhighlight.FragmentsBuilder} appropriate for this field.
*
* @param fieldName The name of the field
* @param params The params controlling Highlighting
- * @return An appropriate FragmentsBuilder.
+ * @return An appropriate {@link org.apache.lucene.search.vectorhighlight.FragmentsBuilder}.
*/
- public FragmentsBuilder getFragmentsBuilder( SolrParams params );
+ public FragmentsBuilder getFragmentsBuilder(SolrParams params) {
+ numRequests++;
+ return getFragmentsBuilder( getPreTags( params, null ), getPostTags( params, null ) );
+ }
+
+ public String[] getPreTags( SolrParams params, String fieldName ){
+ return getTags( params, HighlightParams.TAG_PRE, fieldName, DEFAULT_PRE_TAGS );
+ }
+
+ public String[] getPostTags( SolrParams params, String fieldName ){
+ return getTags( params, HighlightParams.TAG_POST, fieldName, DEFAULT_POST_TAGS );
+ }
+
+ private String[] getTags( SolrParams params, String paramName, String fieldName, String def ){
+ if( defaults != null ) {
+ params = new DefaultSolrParams( params, defaults );
+ }
+ String value = null;
+ if( fieldName == null )
+ value = params.get( paramName, def );
+ else
+ value = params.getFieldParam( fieldName, paramName, def );
+ String[] tags = value.split( "," );
+ for( int i = 0; i < tags.length; i++ ){
+ tags[i] = tags[i].trim();
+ }
+ return tags;
+ }
+
+ protected abstract FragmentsBuilder getFragmentsBuilder( String[] preTags, String[] postTags );
}