Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions eng/lintingconfigs/revapi/track2/revapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,24 @@
"old": "method com.azure.search.documents.util.SearchPagedFlux com.azure.search.documents.SearchAsyncClient::search(com.azure.search.documents.implementation.models.SearchRequest, java.lang.String, com.azure.core.util.Context)",
"justification": "Non-breaking change in Search 05-01-2025 preview to package-private api."
},
{
"ignore": true,
"code": "java.method.visibilityIncreased",
"old": "method java.lang.Long com.azure.search.documents.util.SearchPagedResponse::getCount()",
"justification": "Non-breaking change as class is final."
},
{
"ignore": true,
"code": "java.method.visibilityIncreased",
"old": "method java.lang.Double com.azure.search.documents.util.SearchPagedResponse::getCoverage()",
"justification": "Non-breaking change as class is final."
},
{
"ignore": true,
"code": "java.method.visibilityIncreased",
"old": "method java.util.Map<java.lang.String, java.util.List<com.azure.search.documents.models.FacetResult>> com.azure.search.documents.util.SearchPagedResponse::getFacets()",
"justification": "Non-breaking change as class is final."
},
{
"code": "java.field.enumConstantOrderChanged",
"old": {
Expand Down
3 changes: 3 additions & 0 deletions sdk/search/azure-search-documents/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@

### Bugs Fixed

- Fixed a bug where multiple iterations / subscriptions of `SearchPagedFlux` and `SearchPagedIterable` would return the
same first page result of the initial iteration / subscription.

## 11.8.0 (2025-10-10)

### Features Added
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1277,9 +1277,6 @@ SearchPagedFlux search(String searchText, SearchOptions searchOptions, String qu

private Mono<SearchPagedResponse> search(SearchRequest request, String continuationToken,
SearchFirstPageResponseWrapper firstPageResponseWrapper, String querySourceAuthorization, Context context) {
if (continuationToken == null && firstPageResponseWrapper.getFirstPageResponse() != null) {
return Mono.just(firstPageResponseWrapper.getFirstPageResponse());
}
SearchRequest requestToUse = (continuationToken == null)
? request
: SearchContinuationToken.deserializeToken(serviceVersion.getVersion(), continuationToken);
Expand All @@ -1288,13 +1285,7 @@ private Mono<SearchPagedResponse> search(SearchRequest request, String continuat
.searchPostWithResponseAsync(requestToUse, querySourceAuthorization, null, context)
.onErrorMap(MappingUtils::exceptionMapper)
.map(response -> {
SearchDocumentsResult result = response.getValue();

SearchPagedResponse page
= new SearchPagedResponse(new SimpleResponse<>(response, getSearchResults(result, serializer)),
createContinuationToken(result, serviceVersion), result.getFacets(), result.getCount(),
result.getCoverage(), result.getAnswers(), result.getSemanticPartialResponseReason(),
result.getSemanticPartialResponseType());
SearchPagedResponse page = mapToSearchPagedResponse(response, serializer, serviceVersion);
if (continuationToken == null) {
firstPageResponseWrapper.setFirstPageResponse(page);
}
Expand All @@ -1314,6 +1305,16 @@ static String createContinuationToken(SearchDocumentsResult result, ServiceVersi
result.getNextPageParameters());
}

static SearchPagedResponse mapToSearchPagedResponse(Response<SearchDocumentsResult> response,
JsonSerializer serializer, SearchServiceVersion serviceVersion) {
SearchDocumentsResult result = response.getValue();
return new SearchPagedResponse(new SimpleResponse<>(response, getSearchResults(result, serializer)),
createContinuationToken(result, serviceVersion), result.getFacets(), result.getCount(),
result.getCoverage(), result.getAnswers(), result.getSemanticPartialResponseReason(),
result.getSemanticPartialResponseType(), result.getDebugInfo(),
result.getSemanticQueryRewritesResultType());
}

/**
* Suggests documents in the index that match the given partial query.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,8 @@
import static com.azure.core.util.serializer.TypeReference.createInstance;
import static com.azure.search.documents.SearchAsyncClient.buildIndexBatch;
import static com.azure.search.documents.SearchAsyncClient.createAutoCompleteRequest;
import static com.azure.search.documents.SearchAsyncClient.createContinuationToken;
import static com.azure.search.documents.SearchAsyncClient.createSearchRequest;
import static com.azure.search.documents.SearchAsyncClient.createSuggestRequest;
import static com.azure.search.documents.SearchAsyncClient.getSearchResults;
import static com.azure.search.documents.SearchAsyncClient.getSuggestResults;

/**
Expand Down Expand Up @@ -1111,23 +1109,14 @@ public SearchPagedIterable search(String searchText, SearchOptions searchOptions

private SearchPagedResponse search(SearchRequest request, String continuationToken,
SearchFirstPageResponseWrapper firstPageResponseWrapper, String querySourceAuthorization, Context context) {
if (continuationToken == null && firstPageResponseWrapper.getFirstPageResponse() != null) {
return firstPageResponseWrapper.getFirstPageResponse();
}
SearchRequest requestToUse = (continuationToken == null)
? request
: SearchContinuationToken.deserializeToken(serviceVersion.getVersion(), continuationToken);

return Utility.executeRestCallWithExceptionHandling(() -> {
Response<SearchDocumentsResult> response = restClient.getDocuments()
.searchPostWithResponse(requestToUse, querySourceAuthorization, null, context);
SearchDocumentsResult result = response.getValue();
SearchPagedResponse page
= new SearchPagedResponse(new SimpleResponse<>(response, getSearchResults(result, serializer)),
createContinuationToken(result, serviceVersion), result.getFacets(), result.getCount(),
result.getCoverage(), result.getAnswers(), result.getSemanticPartialResponseReason(),
result.getSemanticPartialResponseType(), result.getDebugInfo(),
result.getSemanticQueryRewritesResultType());
SearchPagedResponse page = SearchAsyncClient.mapToSearchPagedResponse(response, serializer, serviceVersion);
if (continuationToken == null) {
firstPageResponseWrapper.setFirstPageResponse(page);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,13 @@
// Licensed under the MIT License.
package com.azure.search.documents.implementation.util;

import com.azure.search.documents.models.QueryAnswerResult;
import com.azure.search.documents.models.SemanticErrorReason;
import com.azure.search.documents.models.SemanticQueryRewritesResultType;
import com.azure.search.documents.models.SemanticSearchResults;
import com.azure.search.documents.util.SearchPagedResponse;
import com.azure.search.documents.models.SemanticSearchResultsType;

import java.util.List;

/**
* Helper class to access internals of {@link SemanticSearchResults}.
Expand All @@ -15,14 +20,18 @@ private SemanticSearchResultsAccessHelper() {
private static SemanticSearchResultsAccessor accessor;

public interface SemanticSearchResultsAccessor {
SemanticSearchResults create(SearchPagedResponse pagedResponse);
SemanticSearchResults create(List<QueryAnswerResult> queryAnswers, SemanticErrorReason semanticErrorReason,
SemanticSearchResultsType semanticSearchResultsType,
SemanticQueryRewritesResultType semanticQueryRewritesResultType);
}

public static void setAccessor(final SemanticSearchResultsAccessor newAccessor) {
accessor = newAccessor;
}

public static SemanticSearchResults create(SearchPagedResponse pagedResponse) {
public static SemanticSearchResults create(List<QueryAnswerResult> queryAnswers,
SemanticErrorReason semanticErrorReason, SemanticSearchResultsType semanticSearchResultsType,
SemanticQueryRewritesResultType semanticQueryRewritesResultType) {
if (accessor == null) {
try {
Class.forName(SemanticSearchResults.class.getName(), true,
Expand All @@ -33,6 +42,7 @@ public static SemanticSearchResults create(SearchPagedResponse pagedResponse) {
}

assert accessor != null;
return accessor.create(pagedResponse);
return accessor.create(queryAnswers, semanticErrorReason, semanticSearchResultsType,
semanticQueryRewritesResultType);
}
}
Loading