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/01/31 18:16:00 UTC
svn commit: r1563180 - in /lucene/dev/branches/lucene5376/lucene/server/src:
java/org/apache/lucene/server/handlers/BuildSuggestHandler.java
java/org/apache/lucene/server/handlers/SearchHandler.java
test/org/apache/lucene/server/TestHighlight.java
Author: mikemccand
Date: Fri Jan 31 17:16:00 2014
New Revision: 1563180
URL: http://svn.apache.org/r1563180
Log:
LUCENE-5415,LUCENE-5376: get MultiTermQuery highlighting working; fix compilation errors
Modified:
lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/BuildSuggestHandler.java
lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/SearchHandler.java
lucene/dev/branches/lucene5376/lucene/server/src/test/org/apache/lucene/server/TestHighlight.java
Modified: lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/BuildSuggestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/BuildSuggestHandler.java?rev=1563180&r1=1563179&r2=1563180&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/BuildSuggestHandler.java (original)
+++ lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/BuildSuggestHandler.java Fri Jan 31 17:16:00 2014
@@ -33,9 +33,11 @@ import org.apache.lucene.analysis.Analyz
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
+import org.apache.lucene.expressions.Expression;
+import org.apache.lucene.expressions.js.JavascriptCompiler;
import org.apache.lucene.facet.taxonomy.SearcherTaxonomyManager.SearcherAndTaxonomy;
import org.apache.lucene.search.suggest.DocumentDictionary;
-import org.apache.lucene.search.suggest.DocumentExpressionDictionary;
+import org.apache.lucene.search.suggest.DocumentValueSourceDictionary;
import org.apache.lucene.search.suggest.InputIterator;
import org.apache.lucene.search.suggest.Lookup.LookupResult; // javadocs
import org.apache.lucene.search.suggest.Lookup;
@@ -424,11 +426,19 @@ public class BuildSuggestHandler extends
} else {
// Weight is an expression; add bindings for all
// numeric DV fields:
- dict = new DocumentExpressionDictionary(searcher.searcher.getIndexReader(),
- suggestField,
- source.getString("weightExpression"),
- state.exprBindings,
- payloadField);
+ Expression expr;
+ try {
+ expr = JavascriptCompiler.compile(source.getString("weightExpression"));
+ } catch (Exception e) {
+ source.fail("weightExpression", "expression does not compile", e);
+ // Dead code but compiler disagrees
+ expr = null;
+ }
+
+ dict = new DocumentValueSourceDictionary(searcher.searcher.getIndexReader(),
+ suggestField,
+ expr.getValueSource(state.exprBindings),
+ payloadField);
}
// nocommit weird that I have to cast this...?
Modified: lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/SearchHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/SearchHandler.java?rev=1563180&r1=1563179&r2=1563180&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/SearchHandler.java (original)
+++ lucene/dev/branches/lucene5376/lucene/server/src/java/org/apache/lucene/server/handlers/SearchHandler.java Fri Jan 31 17:16:00 2014
@@ -33,6 +33,7 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.FieldType.NumericType;
import org.apache.lucene.expressions.Bindings;
import org.apache.lucene.expressions.Expression;
@@ -517,6 +518,11 @@ public class SearchHandler extends Handl
}
@Override
+ protected Analyzer getIndexAnalyzer(String fieldName) {
+ return state.getField(fieldName).indexAnalyzer;
+ }
+
+ @Override
protected BreakIterator getBreakIterator(String fieldName) {
FieldHighlightConfig perField = perFieldConfig.get(fieldName);
if (perField.mode.equals("whole")) {
@@ -1192,7 +1198,6 @@ public class SearchHandler extends Handl
} else if (pr.name.equals("text")) {
Request r2 = pr.r;
String queryText = r2.getString("text");
- //System.out.println("parseQuery text=" + queryText + " field=" + field);
if (field == null) {
r.fail("no field specified");
}
@@ -2066,6 +2071,8 @@ public class SearchHandler extends Handl
// Pull the searcher we will use
final SearcherAndTaxonomy s = getSearcherAndTaxonomy(r, state, diagnostics);
+ final Query queryOrig = q;
+
// matching finally clause releases this searcher:
try {
@@ -2402,7 +2409,7 @@ public class SearchHandler extends Handl
}
highlights = highlighter.highlighter.highlightToObjects(fieldsArray,
- q,
+ queryOrig,
s.searcher,
highlightDocIDs,
maxPassages);
Modified: lucene/dev/branches/lucene5376/lucene/server/src/test/org/apache/lucene/server/TestHighlight.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/lucene/server/src/test/org/apache/lucene/server/TestHighlight.java?rev=1563180&r1=1563179&r2=1563180&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/lucene/server/src/test/org/apache/lucene/server/TestHighlight.java (original)
+++ lucene/dev/branches/lucene5376/lucene/server/src/test/org/apache/lucene/server/TestHighlight.java Fri Jan 31 17:16:00 2014
@@ -127,6 +127,17 @@ public class TestHighlight extends Serve
renderHighlight(getArray(o, "hits[0].fields.body")));
}
+ // LUCENE-5415
+ public void testHighlightSnippetWildcard() throws Exception {
+ deleteAllDocs();
+ long gen = addDocument(0, "Melanie", "this is a test. here is a random sentence. here is another sentence with test in it.", 10.99f, "2012/10/17");
+ search("te*", gen, null, false, true, null, null);
+ JSONArray fragments = getArray("hits[0].fields.body");
+ assertEquals(2, fragments.size());
+ assertEquals("body:te*", getString(fragments, "[0].parts[1].term"));
+ assertEquals("body:te*", getString(fragments, "[1].parts[1].term"));
+ }
+
/** Highlight entire value as a single passage (eg good
* for title fields). */
public void testWholeHighlight() throws Exception {