blob: 8aa8724965e68a3559bfe4660114092a4bfe33b8 [file] [log] [blame]
Index: contrib/fast-vector-highlighter/src/test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java
===================================================================
--- contrib/fast-vector-highlighter/src/test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java (revision 816162)
+++ contrib/fast-vector-highlighter/src/test/org/apache/lucene/search/vectorhighlight/FieldQueryTest.java (working copy)
@@ -94,6 +94,13 @@
assertCollectionQueries( fq.expand( flatQueries ),
pqF( "a", "b", "c" ), pqF( "c", "d", "e" ), pqF( "a", "b", "c", "d", "e" ) );
+ // "a b c d","b c" => "a b c d","b c"
+ flatQueries = new HashSet<Query>();
+ flatQueries.add( pqF( "a", "b", "c", "d" ) );
+ flatQueries.add( pqF( "b", "c" ) );
+ assertCollectionQueries( fq.expand( flatQueries ),
+ pqF( "a", "b", "c", "d" ), pqF( "b", "c" ) );
+
// "a b b","b c" => "a b b","b c","a b b c"
flatQueries = new HashSet<Query>();
flatQueries.add( pqF( "a", "b", "b" ) );
Index: contrib/fast-vector-highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java
===================================================================
--- contrib/fast-vector-highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java (revision 816162)
+++ contrib/fast-vector-highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldQuery.java (working copy)
@@ -148,6 +148,7 @@
* ex6) src="a b c", dest="b" => no overlap
* ex7) src="a a a a", dest="a a a" => overlap;
* expandQueries={"a a a a a","a a a a a a"}
+ * ex8) src="a b c d", dest="b c" => no overlap
*/
private void checkOverlap( Collection<Query> expandQueries, Term[] src, Term[] dest, int slop, float boost ){
// beginning from 1 (not 0) is safe because that the PhraseQuery has multiple terms
@@ -156,7 +157,7 @@
for( int i = 1; i < src.length; i++ ){
boolean overlap = true;
for( int j = i; j < src.length; j++ ){
- if( !src[j].text().equals( dest[j-i].text() ) ){
+ if( ( j - i ) < dest.length && !src[j].text().equals( dest[j-i].text() ) ){
overlap = false;
break;
}