-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Concurrent rewrite for KnnVectorQuery #12160
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,6 +23,7 @@ | |
import java.io.IOException; | ||
import java.util.HashSet; | ||
import java.util.Set; | ||
import java.util.concurrent.CompletionException; | ||
import org.apache.lucene.document.Document; | ||
import org.apache.lucene.document.Field; | ||
import org.apache.lucene.document.IntPoint; | ||
|
@@ -210,7 +211,10 @@ public void testDimensionMismatch() throws IOException { | |
IndexSearcher searcher = newSearcher(reader); | ||
AbstractKnnVectorQuery kvq = getKnnVectorQuery("field", new float[] {0}, 10); | ||
IllegalArgumentException e = | ||
expectThrows(IllegalArgumentException.class, () -> searcher.search(kvq, 10)); | ||
expectThrows( | ||
CompletionException.class, | ||
IllegalArgumentException.class, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since IAE extends RuntimeExeption, it should be good to just do There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I wanted to preserve the original functionality of the testcase: Checking for illegal arguments There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thank you, that makes sense, I had made a wrong assumption about what expectThrows does with two exception types! |
||
() -> searcher.search(kvq, 10)); | ||
assertEquals("vector query dimension: 1 differs from field dimension: 2", e.getMessage()); | ||
} | ||
} | ||
|
@@ -495,6 +499,7 @@ public void testRandomWithFilter() throws IOException { | |
assertEquals(9, results.totalHits.value); | ||
assertEquals(results.totalHits.value, results.scoreDocs.length); | ||
expectThrows( | ||
CompletionException.class, | ||
UnsupportedOperationException.class, | ||
() -> | ||
searcher.search( | ||
|
@@ -509,6 +514,7 @@ public void testRandomWithFilter() throws IOException { | |
assertEquals(5, results.totalHits.value); | ||
assertEquals(results.totalHits.value, results.scoreDocs.length); | ||
expectThrows( | ||
CompletionException.class, | ||
UnsupportedOperationException.class, | ||
() -> | ||
searcher.search( | ||
|
@@ -536,6 +542,7 @@ public void testRandomWithFilter() throws IOException { | |
// Test a filter that exhausts visitedLimit in upper levels, and switches to exact search | ||
Query filter4 = IntPoint.newRangeQuery("tag", lower, lower + 2); | ||
expectThrows( | ||
CompletionException.class, | ||
UnsupportedOperationException.class, | ||
() -> | ||
searcher.search( | ||
|
@@ -708,6 +715,7 @@ public void testBitSetQuery() throws IOException { | |
|
||
Query filter = new ThrowingBitSetQuery(new FixedBitSet(numDocs)); | ||
expectThrows( | ||
CompletionException.class, | ||
UnsupportedOperationException.class, | ||
() -> | ||
searcher.search( | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In
IndexSearcher
we're usingSliceExecutor
to make sure the main thread is also doing some work but not only wait for joining.I think we can replicate the same logic here? (Since KNN search is likely to be slow so probably the main thread should do some work as well?)
Maybe we can just use the
SliceExecutor
fromIndexSearcher
so that it might also kind of solving the load balancing problem?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the input! This was helpful in reducing latency from thread switching further