Hello,

I'm seeking some help with a highlighting issue involving the SpanQuery family. 
 To illustrate my issue, I added a test to the existing HighlighterTest (see 
diff, below, against tags/lucene_2_9_1).  When this test runs, it fails and the 
System.out.println yields this:

Expected: "Sam dislikes most of the food and has to order <B>fish</B> and 
<B>chips</B> - however the fish is <B>frozen</B>, not fresh.
Observed: "Sam dislikes most of the food and has to order <B>fish</B> and 
<B>chips</B> - however the <B>fish</B> is <B>frozen</B>, not fresh.

That second "fish" doesn't satisfy the query, so I don't expect it to be 
highlighted.  Can anyone out there offer a good starting point on this one?

Regards,

  Mike


Index: 
contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
===================================================================
--- 
contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
        (revision 908726)
+++ 
contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
        (working copy)
@@ -173,7 +173,40 @@
         "Query in a named field does not result in highlighting when that 
field isn't in the query",
         s1, highlightField(q, FIELD_NAME, s1));
   }
+  
+  /*
+   * TODO: Why is that second instance of the term "fish" highlighted?  It is 
not
+   * followed by the term "chips", so it should not be highlighted.
+   */
+  public void testHighlightingNestedSpans() throws Exception {
 
+           String pubText = "Sam dislikes most of the food and has to order"
+                       + " fish and chips - however the fish is frozen, not 
fresh.";
+           
+           String fieldName = "SOME_FIELD_NAME";
+
+           SpanOrQuery spanOr = new SpanOrQuery(
+                               new SpanTermQuery[] {
+                                               new SpanTermQuery(new 
Term(fieldName, "fish")),
+                                               new SpanTermQuery(new 
Term(fieldName, "term1")),
+                                               new SpanTermQuery(new 
Term(fieldName, "term2")),
+                                               new SpanTermQuery(new 
Term(fieldName, "term3")) });
+           
+               SpanNearQuery innerSpanNear = new SpanNearQuery(new SpanQuery[] 
{
+                               spanOr,
+                               new SpanTermQuery(new Term(fieldName, "chips")) 
}, 2, true);
+               
+               SpanNearQuery query = new SpanNearQuery(new SpanQuery[] {
+                               innerSpanNear,
+                               new SpanTermQuery(new Term(fieldName, 
"frozen")) }, 8, true);
+               
+           String expected = "Sam dislikes most of the food and has to order"
+                       + " <B>fish</B> and <B>chips</B> - however the fish is 
<B>frozen</B>, not fresh.";
+           String observed = highlightField(query, fieldName, pubText);
+           System.out.println("Expected: \"" + expected + "\n" + "Observed: 
\"" + observed);
+           assertEquals("Why is that second instance of the term \"fish\" 
highlighted?", expected, observed);
+  }
+
   /**
    * This method intended for use with 
<tt>testHighlightingWithDefaultField()</tt>
  * @throws InvalidTokenOffsetsException 

Reply via email to