|
36 | 36 | import org.apache.lucene.search.Query; |
37 | 37 | import org.apache.lucene.search.join.BitSetProducer; |
38 | 38 | import org.apache.lucene.search.join.ScoreMode; |
| 39 | +import org.apache.lucene.search.join.ToChildBlockJoinQuery; |
39 | 40 | import org.apache.lucene.search.join.ToParentBlockJoinQuery; |
40 | 41 | import org.apache.lucene.search.knn.KnnSearchStrategy; |
41 | 42 | import org.apache.lucene.util.BitUtil; |
@@ -2551,7 +2552,7 @@ private Query createKnnBitQuery( |
2551 | 2552 | knnQuery = filter == null |
2552 | 2553 | ? createExactKnnBitQuery(queryVector) |
2553 | 2554 | : new BooleanQuery.Builder().add(createExactKnnBitQuery(queryVector), BooleanClause.Occur.SHOULD) |
2554 | | - .add(filter, BooleanClause.Occur.FILTER) |
| 2555 | + .add(parentFilter != null ? new ToChildBlockJoinQuery(filter, parentFilter) : filter, BooleanClause.Occur.FILTER) |
2555 | 2556 | .build(); |
2556 | 2557 | if (parentFilter != null) { |
2557 | 2558 | knnQuery = new ToParentBlockJoinQuery(knnQuery, parentFilter, ScoreMode.Max); |
@@ -2592,7 +2593,7 @@ private Query createKnnByteQuery( |
2592 | 2593 | knnQuery = filter == null |
2593 | 2594 | ? createExactKnnByteQuery(queryVector) |
2594 | 2595 | : new BooleanQuery.Builder().add(createExactKnnByteQuery(queryVector), BooleanClause.Occur.SHOULD) |
2595 | | - .add(filter, BooleanClause.Occur.FILTER) |
| 2596 | + .add(parentFilter != null ? new ToChildBlockJoinQuery(filter, parentFilter) : filter, BooleanClause.Occur.FILTER) |
2596 | 2597 | .build(); |
2597 | 2598 | if (parentFilter != null) { |
2598 | 2599 | knnQuery = new ToParentBlockJoinQuery(knnQuery, parentFilter, ScoreMode.Max); |
@@ -2658,7 +2659,7 @@ && isNotUnitVector(squaredMagnitude)) { |
2658 | 2659 | knnQuery = filter == null |
2659 | 2660 | ? createExactKnnFloatQuery(queryVector) |
2660 | 2661 | : new BooleanQuery.Builder().add(createExactKnnFloatQuery(queryVector), BooleanClause.Occur.SHOULD) |
2661 | | - .add(filter, BooleanClause.Occur.FILTER) |
| 2662 | + .add(parentFilter != null ? new ToChildBlockJoinQuery(filter, parentFilter) : filter, BooleanClause.Occur.FILTER) |
2662 | 2663 | .build(); |
2663 | 2664 | if (parentFilter != null) { |
2664 | 2665 | knnQuery = new ToParentBlockJoinQuery(knnQuery, parentFilter, ScoreMode.Max); |
|
0 commit comments