Author: klaas
Date: Thu Apr 10 12:07:23 2008
New Revision: 646926
URL: http://svn.apache.org/viewvc?rev=646926&view=rev
Log:
SOLR-516: add hl.maxAlternateFieldLength
Modified:
lucene/solr/trunk/CHANGES.txt
lucene/solr/trunk/src/java/org/apache/solr/common/params/HighlightParams.java
lucene/solr/trunk/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
lucene/solr/trunk/src/test/org/apache/solr/highlight/HighlighterTest.java
Modified: lucene/solr/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=646926&r1=646925&r2=646926&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Thu Apr 10 12:07:23 2008
@@ -111,11 +111,11 @@
13. SOLR-225: Enable pluggable highlighting classes. Allow configurable
highlighting formatters and Fragmenters. (ryan)
-14. SOLR-273/376/452: Added hl.maxAnalyzedChars highlighting parameter,
defaulting
+14. SOLR-273/376/452/516: Added hl.maxAnalyzedChars highlighting parameter,
defaulting
to 50k, hl.alternateField, which allows the specification of a backup
field to use as summary if no keywords are matched, and hl.mergeContiguous,
which combines fragments if they are adjacent in the source document.
- (klaas, Grant Ingersoll via klaas)
+ (klaas, Grant Ingersoll, Koji Sekiguchi via klaas)
15. SOLR-291: Control maximum number of documents to cache for any entry
in the queryResultCache via queryResultMaxDocsCached solrconfig.xml
Modified:
lucene/solr/trunk/src/java/org/apache/solr/common/params/HighlightParams.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/common/params/HighlightParams.java?rev=646926&r1=646925&r2=646926&view=diff
==============================================================================
---
lucene/solr/trunk/src/java/org/apache/solr/common/params/HighlightParams.java
(original)
+++
lucene/solr/trunk/src/java/org/apache/solr/common/params/HighlightParams.java
Thu Apr 10 12:07:23 2008
@@ -32,6 +32,7 @@
public static final String FRAGMENTER = HIGHLIGHT+".fragmenter";
public static final String FIELD_MATCH = HIGHLIGHT+".requireFieldMatch";
public static final String ALTERNATE_FIELD = HIGHLIGHT+".alternateField";
+ public static final String ALTERNATE_FIELD_LENGTH =
HIGHLIGHT+".maxAlternateFieldLength";
public static final String MERGE_CONTIGUOUS_FRAGMENTS = HIGHLIGHT +
".mergeContiguous";
// Formatter
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=646926&r1=646925&r2=646926&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
Thu Apr 10 12:07:23 2008
@@ -23,6 +23,7 @@
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;
@@ -273,9 +274,24 @@
if (summaries == null || summaries.length == 0) {
String alternateField = req.getParams().getFieldParam(fieldName,
HighlightParams.ALTERNATE_FIELD);
if (alternateField != null && alternateField.length() > 0) {
- String[] altTexts = doc.getValues(alternateField);
- if (altTexts != null && altTexts.length > 0)
- docSummaries.add(fieldName, altTexts);
+ String[] altTexts = doc.getValues(alternateField);
+ if (altTexts != null && altTexts.length > 0){
+ int alternateFieldLen =
req.getParams().getFieldInt(fieldName,
HighlightParams.ALTERNATE_FIELD_LENGTH,0);
+ if( alternateFieldLen <= 0 ){
+ docSummaries.add(fieldName, altTexts);
+ }
+ else{
+ List<String> altList = new ArrayList<String>();
+ int len = 0;
+ for( String altText: altTexts ){
+ altList.add( len + altText.length() > alternateFieldLen ?
+ altText.substring( 0, alternateFieldLen -
len ) : altText );
+ len += altText.length();
+ if( len >= alternateFieldLen ) break;
+ }
+ docSummaries.add(fieldName, altList);
+ }
+ }
}
}
Modified:
lucene/solr/trunk/src/test/org/apache/solr/highlight/HighlighterTest.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/highlight/HighlighterTest.java?rev=646926&r1=646925&r2=646926&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/highlight/HighlighterTest.java
(original)
+++ lucene/solr/trunk/src/test/org/apache/solr/highlight/HighlighterTest.java
Thu Apr 10 12:07:23 2008
@@ -470,5 +470,15 @@
"//[EMAIL PROTECTED]'highlighting']/[EMAIL PROTECTED]'1' and
count(*)=1]",
"//[EMAIL PROTECTED]'highlighting']/[EMAIL PROTECTED]'1']/[EMAIL
PROTECTED]'t_text']/str[.='1']"
);
+
+ // with an alternate + max length
+ args.put("hl.alternateField", "t_text");
+ args.put("hl.maxAlternateFieldLength", "15");
+ sumLRF = h.getRequestFactory("standard", 0, 200, args);
+ assertQ("Alternate summarization",
+ sumLRF.makeRequest("tv_text:keyword"),
+ "//[EMAIL PROTECTED]'highlighting']/[EMAIL PROTECTED]'1' and
count(*)=1]",
+ "//[EMAIL PROTECTED]'highlighting']/[EMAIL PROTECTED]'1']/[EMAIL
PROTECTED]'t_text']/str[.='a piece of text']"
+ );
}
}