Skip to content

Commit 9a2821c

Browse files
author
Michael Sokolov
committed
fix profiled filtered knn vector queries
1 parent d002b00 commit 9a2821c

1 file changed

Lines changed: 14 additions & 8 deletions

File tree

src/main/knn/KnnGraphTester.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1431,18 +1431,21 @@ private static Result doByteVectorQuery(
14311431

14321432
String knnField = getKnnField(filterStrategy);
14331433

1434-
Query query = switch (searchType) {
1434+
ProfiledVectorQuery vectorQuery = switch (searchType) {
14351435
case KNN -> new ProfiledKnnByteVectorQuery(knnField, vector, k, fanout, queryTimeFilter);
14361436
case RADIUS -> new ProfiledByteVectorSimilarityQuery(knnField, vector, traversalSimilarity, resultSimilarity, filter);
14371437
};
1438+
Query query;
14381439
if (filterStrategy == FilterStrategy.QUERY_TIME_POST_FILTER) {
14391440
query = new BooleanQuery.Builder()
1440-
.add(query, BooleanClause.Occur.MUST)
1441-
.add(filter, BooleanClause.Occur.FILTER)
1442-
.build();
1441+
.add((Query) vectorQuery, BooleanClause.Occur.MUST)
1442+
.add(filter, BooleanClause.Occur.FILTER)
1443+
.build();
1444+
} else {
1445+
query = (Query) vectorQuery;
14431446
}
14441447
TopDocs docs = searcher.search(query, resultSize);
1445-
return new Result(docs, ((ProfiledVectorQuery) query).totalVisitedVectorCount(), 0);
1448+
return new Result(docs, vectorQuery.totalVisitedVectorCount(), 0);
14461449
}
14471450

14481451
private static Result doFloatVectorQuery(
@@ -1466,18 +1469,21 @@ private static Result doFloatVectorQuery(
14661469
return new Result(topDocs, 0, 0);
14671470
}
14681471

1469-
Query query = switch (searchType) {
1472+
ProfiledVectorQuery vectorQuery = switch (searchType) {
14701473
case KNN -> new ProfiledKnnFloatVectorQuery(knnField, vector, k, fanout, queryTimeFilter);
14711474
case RADIUS -> new ProfiledFloatVectorSimilarityQuery(knnField, vector, traversalSimilarity, resultSimilarity, filter);
14721475
};
1476+
Query query;
14731477
if (filterStrategy == FilterStrategy.QUERY_TIME_POST_FILTER) {
14741478
query = new BooleanQuery.Builder()
1475-
.add(query, BooleanClause.Occur.MUST)
1479+
.add((Query) vectorQuery, BooleanClause.Occur.MUST)
14761480
.add(filter, BooleanClause.Occur.FILTER)
14771481
.build();
1482+
} else {
1483+
query = (Query) vectorQuery;
14781484
}
14791485
TopDocs docs = searcher.search(query, resultSize);
1480-
return new Result(docs, ((ProfiledVectorQuery) query).totalVisitedVectorCount(), 0);
1486+
return new Result(docs, vectorQuery.totalVisitedVectorCount(), 0);
14811487
}
14821488

14831489
record Result(TopDocs topDocs, long visitedCount, int reentryCount) {

0 commit comments

Comments
 (0)