Skip to content

Commit bff857d

Browse files
authored
Update pagination_depth datatype from int to Integer (opensearch-project#1094)
* Update pagination_depth datatype from int to Integer Signed-off-by: Varun Jain <varunudr@amazon.com>
1 parent f6d8a12 commit bff857d

File tree

6 files changed

+15
-11
lines changed

6 files changed

+15
-11
lines changed

src/main/java/org/opensearch/neuralsearch/query/HybridQuery.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ public HybridQuery(final Collection<Query> subQueries, final List<Query> filterQ
4646
if (subQueries.isEmpty()) {
4747
throw new IllegalArgumentException("collection of queries must not be empty");
4848
}
49-
if (hybridQueryContext.getPaginationDepth() == 0) {
49+
Integer paginationDepth = hybridQueryContext.getPaginationDepth();
50+
if (Objects.nonNull(paginationDepth) && paginationDepth == 0) {
5051
throw new IllegalArgumentException("pagination_depth must not be zero");
5152
}
5253
if (Objects.isNull(filterQueries) || filterQueries.isEmpty()) {

src/main/java/org/opensearch/neuralsearch/query/HybridQueryBuilder.java

+9-5
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public final class HybridQueryBuilder extends AbstractQueryBuilder<HybridQueryBu
5555

5656
private final List<QueryBuilder> queries = new ArrayList<>();
5757

58-
private int paginationDepth;
58+
private Integer paginationDepth;
5959

6060
static final int MAX_NUMBER_OF_SUB_QUERIES = 5;
6161
private final static int DEFAULT_PAGINATION_DEPTH = 10;
@@ -65,7 +65,7 @@ public HybridQueryBuilder(StreamInput in) throws IOException {
6565
super(in);
6666
queries.addAll(readQueries(in));
6767
if (isClusterOnOrAfterMinReqVersionForPaginationInHybridQuery()) {
68-
paginationDepth = in.readInt();
68+
paginationDepth = in.readOptionalInt();
6969
}
7070
}
7171

@@ -78,7 +78,7 @@ public HybridQueryBuilder(StreamInput in) throws IOException {
7878
protected void doWriteTo(StreamOutput out) throws IOException {
7979
writeQueries(out, queries);
8080
if (isClusterOnOrAfterMinReqVersionForPaginationInHybridQuery()) {
81-
out.writeInt(paginationDepth);
81+
out.writeOptionalInt(paginationDepth);
8282
}
8383
}
8484

@@ -109,8 +109,9 @@ protected void doXContent(XContentBuilder builder, Params params) throws IOExcep
109109
queryBuilder.toXContent(builder, params);
110110
}
111111
builder.endArray();
112-
if (isClusterOnOrAfterMinReqVersionForPaginationInHybridQuery()) {
113-
builder.field(PAGINATION_DEPTH_FIELD.getPreferredName(), paginationDepth == 0 ? DEFAULT_PAGINATION_DEPTH : paginationDepth);
112+
// TODO https://github.com/opensearch-project/neural-search/issues/1097
113+
if (Objects.nonNull(paginationDepth)) {
114+
builder.field(PAGINATION_DEPTH_FIELD.getPreferredName(), paginationDepth);
114115
}
115116
printBoostAndQueryName(builder);
116117
builder.endObject();
@@ -324,6 +325,9 @@ private Collection<Query> toQueries(Collection<QueryBuilder> queryBuilders, Quer
324325
}
325326

326327
private static void validatePaginationDepth(final int paginationDepth, final QueryShardContext queryShardContext) {
328+
if (Objects.isNull(paginationDepth)) {
329+
return;
330+
}
327331
if (paginationDepth < LOWER_BOUND_OF_PAGINATION_DEPTH) {
328332
throw new IllegalArgumentException(
329333
String.format(Locale.ROOT, "pagination_depth should be greater than %s", LOWER_BOUND_OF_PAGINATION_DEPTH)

src/main/java/org/opensearch/neuralsearch/query/HybridQueryContext.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,12 @@
66

77
import lombok.Builder;
88
import lombok.Getter;
9-
import lombok.NonNull;
109

1110
/**
1211
* Class that holds the low level information of hybrid query in the form of context
1312
*/
1413
@Builder
1514
@Getter
1615
public class HybridQueryContext {
17-
@NonNull
18-
private int paginationDepth;
16+
private Integer paginationDepth;
1917
}

src/main/java/org/opensearch/neuralsearch/search/query/HybridCollectorManager.java

+1
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,7 @@ private static int getSubqueryResultsRetrievalSize(final SearchContext searchCon
491491
if (searchContext.from() == 0) {
492492
return searchContext.size();
493493
}
494+
log.info("pagination_depth is {}", paginationDepth);
494495
return paginationDepth;
495496
}
496497

src/test/java/org/opensearch/neuralsearch/query/HybridQueryBuilderTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ public void testFromXContent_whenMultipleSubQueries_thenBuildSuccessfully() {
426426
assertEquals(2, queryTwoSubQueries.queries().size());
427427
assertTrue(queryTwoSubQueries.queries().get(0) instanceof NeuralQueryBuilder);
428428
assertTrue(queryTwoSubQueries.queries().get(1) instanceof TermQueryBuilder);
429-
assertEquals(10, queryTwoSubQueries.paginationDepth());
429+
assertEquals(10, queryTwoSubQueries.paginationDepth().intValue());
430430
// verify knn vector query
431431
NeuralQueryBuilder neuralQueryBuilder = (NeuralQueryBuilder) queryTwoSubQueries.queries().get(0);
432432
assertEquals(VECTOR_FIELD_NAME, neuralQueryBuilder.fieldName());

src/test/java/org/opensearch/neuralsearch/query/HybridQueryTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public void testQueryBasics_whenMultipleDifferentQueries_thenSuccessful() {
9999
countOfQueries++;
100100
}
101101
assertEquals(2, countOfQueries);
102-
assertEquals(10, query3.getQueryContext().getPaginationDepth());
102+
assertEquals(10, query3.getQueryContext().getPaginationDepth().intValue());
103103
}
104104

105105
@SneakyThrows

0 commit comments

Comments
 (0)