You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2014/11/15 00:12:18 UTC
svn commit: r1639802 - in /lucene/dev/branches/lucene_solr_4_10: ./ lucene/
lucene/suggest/
lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/
lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/ solr/
solr/core/ solr/co...
Author: mikemccand
Date: Fri Nov 14 23:12:17 2014
New Revision: 1639802
URL: http://svn.apache.org/r1639802
Log:
LUCENE-6004: don't highlight LookupResult.key from AnalyzingInfixSuggester
Modified:
lucene/dev/branches/lucene_solr_4_10/ (props changed)
lucene/dev/branches/lucene_solr_4_10/lucene/ (props changed)
lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/lucene_solr_4_10/lucene/suggest/ (props changed)
lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/BlendedInfixSuggester.java
lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
lucene/dev/branches/lucene_solr_4_10/solr/ (props changed)
lucene/dev/branches/lucene_solr_4_10/solr/core/ (props changed)
lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/ (props changed)
lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingInfixLookupFactory.java
lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/BlendedInfixLookupFactory.java
Modified: lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt?rev=1639802&r1=1639801&r2=1639802&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_10/lucene/CHANGES.txt Fri Nov 14 23:12:17 2014
@@ -25,6 +25,9 @@ Bug fixes
* LUCENE-3229: Overlapping ordered SpanNearQuery spans should not match.
(Ludovic Boutros, Paul Elschot, Greg Dearing, ehatcher)
+* LUCENE-5929: Also extract terms to highlight from block join
+ queries. (Julie Tibshirani via Mike McCandless)
+
Documentation
* LUCENE-6057: Improve Sort(SortField) docs (Martin Braun via Mike McCandless)
Modified: lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java?rev=1639802&r1=1639801&r2=1639802&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java Fri Nov 14 23:12:17 2014
@@ -22,6 +22,7 @@ import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -531,8 +532,7 @@ public class AnalyzingInfixSuggester ext
LookupResult result;
if (doHighlight) {
- Object highlightKey = highlight(text, matchedTokens, prefixToken);
- result = new LookupResult(highlightKey.toString(), highlightKey, score, payload, contexts);
+ result = new LookupResult(text, highlight(text, matchedTokens, prefixToken), score, payload, contexts);
} else {
result = new LookupResult(text, score, payload, contexts);
}
Modified: lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/BlendedInfixSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/BlendedInfixSuggester.java?rev=1639802&r1=1639801&r2=1639802&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/BlendedInfixSuggester.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/BlendedInfixSuggester.java Fri Nov 14 23:12:17 2014
@@ -180,8 +180,7 @@ public class BlendedInfixSuggester exten
LookupResult result;
if (doHighlight) {
- Object highlightKey = highlight(text, matchedTokens, prefixToken);
- result = new LookupResult(highlightKey.toString(), highlightKey, score, payload);
+ result = new LookupResult(text, highlight(text, matchedTokens, prefixToken), score, payload);
} else {
result = new LookupResult(text, score, payload);
}
Modified: lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java?rev=1639802&r1=1639801&r2=1639802&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java Fri Nov 14 23:12:17 2014
@@ -63,29 +63,34 @@ public class AnalyzingInfixSuggesterTest
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("ear", random()), 10, true, true);
assertEquals(2, results.size());
- assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
- assertEquals("lend me your <b>ear</b>", results.get(1).key);
+ assertEquals("lend me your ear", results.get(1).key);
+ assertEquals("lend me your <b>ear</b>", results.get(1).highlightKey);
assertEquals(8, results.get(1).value);
assertEquals(new BytesRef("foobar"), results.get(1).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("ear ", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("lend me your <b>ear</b>", results.get(0).key);
+ assertEquals("lend me your ear", results.get(0).key);
+ assertEquals("lend me your <b>ear</b>", results.get(0).highlightKey);
assertEquals(8, results.get(0).value);
assertEquals(new BytesRef("foobar"), results.get(0).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("pen", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a <b>pen</b>ny saved is a <b>pen</b>ny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>pen</b>ny saved is a <b>pen</b>ny earned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("p", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a <b>p</b>enny saved is a <b>p</b>enny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>p</b>enny saved is a <b>p</b>enny earned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
@@ -109,7 +114,8 @@ public class AnalyzingInfixSuggesterTest
suggester = new AnalyzingInfixSuggester(TEST_VERSION_CURRENT, newFSDirectory(tempDir), a, a, 3);
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("ear", random()), 10, true, true);
assertEquals(2, results.size());
- assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
assertEquals(2, suggester.getCount());
@@ -233,16 +239,14 @@ public class AnalyzingInfixSuggesterTest
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("ear", random()), 10, true, doHighlight);
assertEquals(2, results.size());
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
if (doHighlight) {
- assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).key);
- } else {
- assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).highlightKey);
}
assertEquals(10, results.get(0).value);
+ assertEquals("lend me your ear", results.get(1).key);
if (doHighlight) {
- assertEquals("lend me your <b>ear</b>", results.get(1).key);
- } else {
- assertEquals("lend me your ear", results.get(1).key);
+ assertEquals("lend me your <b>ear</b>", results.get(1).highlightKey);
}
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
assertEquals(8, results.get(1).value);
@@ -250,30 +254,27 @@ public class AnalyzingInfixSuggesterTest
results = suggester.lookup(TestUtil.stringToCharSequence("ear ", random()), 10, true, doHighlight);
assertEquals(1, results.size());
+ assertEquals("lend me your ear", results.get(0).key);
if (doHighlight) {
- assertEquals("lend me your <b>ear</b>", results.get(0).key);
- } else {
- assertEquals("lend me your ear", results.get(0).key);
+ assertEquals("lend me your <b>ear</b>", results.get(0).highlightKey);
}
assertEquals(8, results.get(0).value);
assertEquals(new BytesRef("foobar"), results.get(0).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("pen", random()), 10, true, doHighlight);
assertEquals(1, results.size());
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
if (doHighlight) {
- assertEquals("a <b>pen</b>ny saved is a <b>pen</b>ny earned", results.get(0).key);
- } else {
- assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>pen</b>ny saved is a <b>pen</b>ny earned", results.get(0).highlightKey);
}
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("p", random()), 10, true, doHighlight);
assertEquals(1, results.size());
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
if (doHighlight) {
- assertEquals("a <b>p</b>enny saved is a <b>p</b>enny earned", results.get(0).key);
- } else {
- assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>p</b>enny saved is a <b>p</b>enny earned", results.get(0).highlightKey);
}
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
@@ -296,7 +297,8 @@ public class AnalyzingInfixSuggesterTest
suggester.build(new InputArrayIterator(keys));
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("penn", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a <b>penn</b>y saved is a <b>penn</b>y earned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>penn</b>y saved is a <b>penn</b>y earned", results.get(0).highlightKey);
suggester.close();
}
@@ -310,7 +312,8 @@ public class AnalyzingInfixSuggesterTest
suggester.build(new InputArrayIterator(keys));
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("penn", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a <b>Penn</b>y saved is a <b>penn</b>y earned", results.get(0).key);
+ assertEquals("a Penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>Penn</b>y saved is a <b>penn</b>y earned", results.get(0).highlightKey);
suggester.close();
// Try again, but overriding addPrefixMatch to highlight
@@ -326,7 +329,8 @@ public class AnalyzingInfixSuggesterTest
suggester.build(new InputArrayIterator(keys));
results = suggester.lookup(TestUtil.stringToCharSequence("penn", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a <b>Penny</b> saved is a <b>penny</b> earned", results.get(0).key);
+ assertEquals("a Penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>Penny</b> saved is a <b>penny</b> earned", results.get(0).highlightKey);
suggester.close();
}
@@ -371,7 +375,8 @@ public class AnalyzingInfixSuggesterTest
suggester.build(new InputArrayIterator(keys));
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("a", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a bob for <b>a</b>pples", results.get(0).key);
+ assertEquals("a bob for apples", results.get(0).key);
+ assertEquals("a bob for <b>a</b>pples", results.get(0).highlightKey);
suggester.close();
}
@@ -384,29 +389,34 @@ public class AnalyzingInfixSuggesterTest
suggester.refresh();
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("ear", random()), 10, true, true);
assertEquals(2, results.size());
- assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
- assertEquals("lend me your <b>ear</b>", results.get(1).key);
+ assertEquals("lend me your ear", results.get(1).key);
+ assertEquals("lend me your <b>ear</b>", results.get(1).highlightKey);
assertEquals(8, results.get(1).value);
assertEquals(new BytesRef("foobar"), results.get(1).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("ear ", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("lend me your <b>ear</b>", results.get(0).key);
+ assertEquals("lend me your ear", results.get(0).key);
+ assertEquals("lend me your <b>ear</b>", results.get(0).highlightKey);
assertEquals(8, results.get(0).value);
assertEquals(new BytesRef("foobar"), results.get(0).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("pen", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a <b>pen</b>ny saved is a <b>pen</b>ny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>pen</b>ny saved is a <b>pen</b>ny earned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("p", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a <b>p</b>enny saved is a <b>p</b>enny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>p</b>enny saved is a <b>p</b>enny earned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
@@ -422,7 +432,8 @@ public class AnalyzingInfixSuggesterTest
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("pen p", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("the <b>pen</b> is <b>p</b>retty", results.get(0).key);
+ assertEquals("the pen is pretty", results.get(0).key);
+ assertEquals("the <b>pen</b> is <b>p</b>retty", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
suggester.close();
@@ -677,7 +688,11 @@ public class AnalyzingInfixSuggesterTest
assertEquals(expectedCount, actual.size());
for(int i=0;i<expectedCount;i++) {
- assertEquals(expected.get(i).term.utf8ToString(), actual.get(i).key.toString());
+ if (doHilite) {
+ assertEquals(expected.get(i).term.utf8ToString(), actual.get(i).highlightKey);
+ } else {
+ assertEquals(expected.get(i).term.utf8ToString(), actual.get(i).key);
+ }
assertEquals(expected.get(i).v, actual.get(i).value);
assertEquals(expected.get(i).payload, actual.get(i).payload);
}
@@ -745,7 +760,8 @@ public class AnalyzingInfixSuggesterTest
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("ear", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("lend me your <b>ear</b>", results.get(0).key);
+ assertEquals("lend me your ear", results.get(0).key);
+ assertEquals("lend me your <b>ear</b>", results.get(0).highlightKey);
assertEquals(8, results.get(0).value);
assertEquals(new BytesRef("foobar"), results.get(0).payload);
@@ -757,29 +773,34 @@ public class AnalyzingInfixSuggesterTest
results = suggester.lookup(TestUtil.stringToCharSequence("ear", random()), 10, true, true);
assertEquals(2, results.size());
- assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
- assertEquals("lend me your <b>ear</b>", results.get(1).key);
+ assertEquals("lend me your ear", results.get(1).key);
+ assertEquals("lend me your <b>ear</b>", results.get(1).highlightKey);
assertEquals(8, results.get(1).value);
assertEquals(new BytesRef("foobar"), results.get(1).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("ear ", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("lend me your <b>ear</b>", results.get(0).key);
+ assertEquals("lend me your ear", results.get(0).key);
+ assertEquals("lend me your <b>ear</b>", results.get(0).highlightKey);
assertEquals(8, results.get(0).value);
assertEquals(new BytesRef("foobar"), results.get(0).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("pen", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a <b>pen</b>ny saved is a <b>pen</b>ny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>pen</b>ny saved is a <b>pen</b>ny earned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
results = suggester.lookup(TestUtil.stringToCharSequence("p", random()), 10, true, true);
assertEquals(1, results.size());
- assertEquals("a <b>p</b>enny saved is a <b>p</b>enny earned", results.get(0).key);
+ assertEquals("a penny saved is a penny earned", results.get(0).key);
+ assertEquals("a <b>p</b>enny saved is a <b>p</b>enny earned", results.get(0).highlightKey);
assertEquals(10, results.get(0).value);
assertEquals(new BytesRef("foobaz"), results.get(0).payload);
@@ -791,10 +812,12 @@ public class AnalyzingInfixSuggesterTest
results = suggester.lookup(TestUtil.stringToCharSequence("ear", random()), 10, true, true);
assertEquals(2, results.size());
- assertEquals("lend me your <b>ear</b>", results.get(0).key);
+ assertEquals("lend me your ear", results.get(0).key);
+ assertEquals("lend me your <b>ear</b>", results.get(0).highlightKey);
assertEquals(12, results.get(0).value);
assertEquals(new BytesRef("foobox"), results.get(0).payload);
- assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(1).key);
+ assertEquals("a penny saved is a penny earned", results.get(1).key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", results.get(1).highlightKey);
assertEquals(10, results.get(1).value);
assertEquals(new BytesRef("foobaz"), results.get(1).payload);
suggester.close();
@@ -833,7 +856,8 @@ public class AnalyzingInfixSuggesterTest
List<LookupResult> results = suggester.lookup(TestUtil.stringToCharSequence("ear", random()), 10, true, true);
assertEquals(2, results.size());
LookupResult result = results.get(0);
- assertEquals("a penny saved is a penny <b>ear</b>ned", result.key);
+ assertEquals("a penny saved is a penny earned", result.key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", result.highlightKey);
assertEquals(10, result.value);
assertEquals(new BytesRef("foobaz"), result.payload);
assertNotNull(result.contexts);
@@ -842,7 +866,8 @@ public class AnalyzingInfixSuggesterTest
assertTrue(result.contexts.contains(new BytesRef("baz")));
result = results.get(1);
- assertEquals("lend me your <b>ear</b>", result.key);
+ assertEquals("lend me your ear", result.key);
+ assertEquals("lend me your <b>ear</b>", result.highlightKey);
assertEquals(8, result.value);
assertEquals(new BytesRef("foobar"), result.payload);
assertNotNull(result.contexts);
@@ -855,7 +880,8 @@ public class AnalyzingInfixSuggesterTest
assertEquals(2, results.size());
result = results.get(0);
- assertEquals("a penny saved is a penny <b>ear</b>ned", result.key);
+ assertEquals("a penny saved is a penny earned", result.key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", result.highlightKey);
assertEquals(10, result.value);
assertEquals(new BytesRef("foobaz"), result.payload);
assertNotNull(result.contexts);
@@ -864,7 +890,8 @@ public class AnalyzingInfixSuggesterTest
assertTrue(result.contexts.contains(new BytesRef("baz")));
result = results.get(1);
- assertEquals("lend me your <b>ear</b>", result.key);
+ assertEquals("lend me your ear", result.key);
+ assertEquals("lend me your <b>ear</b>", result.highlightKey);
assertEquals(8, result.value);
assertEquals(new BytesRef("foobar"), result.payload);
assertNotNull(result.contexts);
@@ -877,7 +904,8 @@ public class AnalyzingInfixSuggesterTest
assertEquals(1, results.size());
result = results.get(0);
- assertEquals("lend me your <b>ear</b>", result.key);
+ assertEquals("lend me your ear", result.key);
+ assertEquals("lend me your <b>ear</b>", result.highlightKey);
assertEquals(8, result.value);
assertEquals(new BytesRef("foobar"), result.payload);
assertNotNull(result.contexts);
@@ -890,7 +918,8 @@ public class AnalyzingInfixSuggesterTest
assertEquals(1, results.size());
result = results.get(0);
- assertEquals("a penny saved is a penny <b>ear</b>ned", result.key);
+ assertEquals("a penny saved is a penny earned", result.key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", result.highlightKey);
assertEquals(10, result.value);
assertEquals(new BytesRef("foobaz"), result.payload);
assertNotNull(result.contexts);
@@ -903,7 +932,8 @@ public class AnalyzingInfixSuggesterTest
assertEquals(2, results.size());
result = results.get(0);
- assertEquals("a penny saved is a penny <b>ear</b>ned", result.key);
+ assertEquals("a penny saved is a penny earned", result.key);
+ assertEquals("a penny saved is a penny <b>ear</b>ned", result.highlightKey);
assertEquals(10, result.value);
assertEquals(new BytesRef("foobaz"), result.payload);
assertNotNull(result.contexts);
@@ -912,7 +942,8 @@ public class AnalyzingInfixSuggesterTest
assertTrue(result.contexts.contains(new BytesRef("baz")));
result = results.get(1);
- assertEquals("lend me your <b>ear</b>", result.key);
+ assertEquals("lend me your ear", result.key);
+ assertEquals("lend me your <b>ear</b>", result.highlightKey);
assertEquals(8, result.value);
assertEquals(new BytesRef("foobar"), result.payload);
assertNotNull(result.contexts);
Modified: lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingInfixLookupFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingInfixLookupFactory.java?rev=1639802&r1=1639801&r2=1639802&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingInfixLookupFactory.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingInfixLookupFactory.java Fri Nov 14 23:12:17 2014
@@ -19,11 +19,15 @@ package org.apache.solr.spelling.suggest
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.search.suggest.Lookup;
import org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester;
import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.util.BytesRef;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
import org.apache.solr.schema.FieldType;
@@ -94,7 +98,25 @@ public class AnalyzingInfixLookupFactory
try {
return new AnalyzingInfixSuggester(core.getSolrConfig().luceneMatchVersion,
FSDirectory.open(new File(indexPath)), indexAnalyzer,
- queryAnalyzer, minPrefixChars);
+ queryAnalyzer, minPrefixChars) {
+ @Override
+ public List<LookupResult> lookup(CharSequence key, Set<BytesRef> contexts, int num, boolean allTermsRequired, boolean doHighlight) throws IOException {
+ List<LookupResult> res = super.lookup(key, contexts, num, allTermsRequired, doHighlight);
+ if (doHighlight) {
+ List<LookupResult> res2 = new ArrayList<>();
+ for(LookupResult hit : res) {
+ res2.add(new LookupResult(hit.highlightKey.toString(),
+ hit.highlightKey,
+ hit.value,
+ hit.payload,
+ hit.contexts));
+ }
+ res = res2;
+ }
+
+ return res;
+ }
+ };
} catch (IOException e) {
throw new RuntimeException();
}
Modified: lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/BlendedInfixLookupFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/BlendedInfixLookupFactory.java?rev=1639802&r1=1639801&r2=1639802&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/BlendedInfixLookupFactory.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/solr/core/src/java/org/apache/solr/spelling/suggest/fst/BlendedInfixLookupFactory.java Fri Nov 14 23:12:17 2014
@@ -19,13 +19,17 @@ package org.apache.solr.spelling.suggest
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.search.suggest.Lookup;
import org.apache.lucene.search.suggest.analyzing.AnalyzingInfixSuggester;
-import org.apache.lucene.search.suggest.analyzing.BlendedInfixSuggester.BlenderType;
import org.apache.lucene.search.suggest.analyzing.BlendedInfixSuggester;
+import org.apache.lucene.search.suggest.analyzing.BlendedInfixSuggester.BlenderType;
import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.util.BytesRef;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
import org.apache.solr.schema.FieldType;
@@ -100,7 +104,25 @@ public class BlendedInfixLookupFactory e
return new BlendedInfixSuggester(core.getSolrConfig().luceneMatchVersion,
FSDirectory.open(new File(indexPath)),
indexAnalyzer, queryAnalyzer, minPrefixChars,
- blenderType, numFactor);
+ blenderType, numFactor) {
+ @Override
+ public List<LookupResult> lookup(CharSequence key, Set<BytesRef> contexts, int num, boolean allTermsRequired, boolean doHighlight) throws IOException {
+ List<LookupResult> res = super.lookup(key, contexts, num, allTermsRequired, doHighlight);
+ if (doHighlight) {
+ List<LookupResult> res2 = new ArrayList<>();
+ for(LookupResult hit : res) {
+ res2.add(new LookupResult(hit.highlightKey.toString(),
+ hit.highlightKey,
+ hit.value,
+ hit.payload,
+ hit.contexts));
+ }
+ res = res2;
+ }
+
+ return res;
+ }
+ };
} catch (IOException e) {
throw new RuntimeException();
}