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 {