Skip to content

Commit

Permalink
canSearchWithLuceneSyntax (Azure#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
navalev authored Aug 22, 2019
1 parent 9894253 commit c1efed5
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.azure.search.data.common.SearchPagedResponse;
import com.azure.search.data.generated.models.IndexAction;
import com.azure.search.data.generated.models.IndexBatch;
import com.azure.search.data.generated.models.QueryType;
import com.azure.search.data.generated.models.SearchParameters;
import com.azure.search.data.generated.models.SearchRequestOptions;
import com.azure.search.data.generated.models.SearchResult;
Expand Down Expand Up @@ -170,12 +171,30 @@ public void canFilter() {
Assert.assertNotNull(results);

List<Map<String, Object>> searchResultsList = results.log().map(res -> res.additionalProperties()).collectList().block();
Assert.assertNotNull(searchResultsList);
Assert.assertEquals(2, searchResultsList.size());

List hotelIds = searchResultsList.stream().map(r -> r.get("HotelId")).collect(Collectors.toList());
Assert.assertTrue(Arrays.asList("1", "5").containsAll(hotelIds));
}

@Override
public void canSearchWithLuceneSyntax() {
HashMap<String, Object> expectedResult = new HashMap<>();
expectedResult.put("HotelName", "Roach Motel");
expectedResult.put("Rating", 1);

SearchParameters searchParameters = new SearchParameters().queryType(QueryType.FULL).select(Arrays.asList("HotelName", "Rating"));
PagedFlux<SearchResult> results = client.search("HotelName:roch~", searchParameters, new SearchRequestOptions());

Assert.assertNotNull(results);
StepVerifier.create(results.byPage())
.assertNext(res -> {
Assert.assertEquals(1, res.items().size());
Assert.assertEquals(expectedResult, dropUnnecessaryFields(res.items().get(0).additionalProperties()));
}).verifyComplete();
}

@Override
public void canSearchDynamicDocuments() {
List<PagedResponse<SearchResult>> results = client.search("*", new SearchParameters(), new SearchRequestOptions()).byPage().log().collectList().block();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.azure.search.data.common.SearchPagedResponse;
import com.azure.search.data.generated.models.IndexAction;
import com.azure.search.data.generated.models.IndexBatch;
import com.azure.search.data.generated.models.QueryType;
import com.azure.search.data.generated.models.SearchParameters;
import com.azure.search.data.generated.models.SearchRequestOptions;
import com.azure.search.data.generated.models.SearchResult;
Expand Down Expand Up @@ -175,6 +176,21 @@ public void canFilter() {
Assert.assertTrue(Arrays.asList("1", "5").containsAll(hotelIds));
}

@Override
public void canSearchWithLuceneSyntax() {
Map<String, Object> expectedResult = new HashMap<>();
expectedResult.put("HotelName", "Roach Motel");
expectedResult.put("Rating", 1);

SearchParameters searchParameters = new SearchParameters().queryType(QueryType.FULL).select(Arrays.asList("HotelName", "Rating"));
PagedIterable<SearchResult> results = client.search("HotelName:roch~", searchParameters, new SearchRequestOptions());

Assert.assertNotNull(results);
List<Map<String, Object>> searchResultsList = getSearchResults(results);
Assert.assertEquals(1, searchResultsList.size());
Assert.assertEquals(expectedResult, searchResultsList.get(0));
}

@Override
public void canFilterNonNullableType() throws Exception {

Expand All @@ -188,7 +204,6 @@ public void canFilterNonNullableType() throws Exception {
List<Map<String, Object>> searchResultsList = getSearchResults(results);
Assert.assertEquals(2, searchResultsList.size());

searchResultsList.forEach(SearchTestBase::dropUnnecessaryFields);
Assert.assertEquals(expectedDocsList, searchResultsList);
}

Expand Down Expand Up @@ -225,7 +240,7 @@ private List<Map<String, Object>> getSearchResults(PagedIterable<SearchResult> r
while (iterator.hasNext()) {
SearchPagedResponse result = (SearchPagedResponse) iterator.next();
Assert.assertNotNull(result.items());
result.items().forEach(item -> searchResults.add(item.additionalProperties()));
result.items().forEach(item -> searchResults.add(dropUnnecessaryFields(item.additionalProperties())));
}

return searchResults;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ protected String getSearchResultId(SearchResult searchResult, String idFieldName

protected abstract void setIndexName(String indexName);


@Test
public void searchThrowsWhenRequestIsMalformed() {
thrown.expect(HttpResponseException.class);
Expand Down Expand Up @@ -168,6 +169,9 @@ public void searchThrowsWhenRequestIsMalformed() {
@Test
public abstract void canFilter();

@Test
public abstract void canSearchWithLuceneSyntax();

@Test
public abstract void testCanSearchWithSearchModeAll();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"networkCallRecords" : [ {
"Method" : "POST",
"Uri" : "https://azs-sdk8dd175462649.search.windows.net/indexes('hotels')/docs/search.index?api-version=2019-05-06",
"Headers" : {
"Content-Type" : "application/json; charset=utf-8"
},
"Response" : {
"Pragma" : "no-cache",
"retry-after" : "0",
"request-id" : "87600b37-2f7b-457f-b419-1fdf775f4db3",
"StatusCode" : "200",
"Date" : "Wed, 21 Aug 2019 12:37:35 GMT",
"Strict-Transport-Security" : "max-age=15724800; includeSubDomains",
"Cache-Control" : "no-cache",
"elapsed-time" : "146",
"OData-Version" : "4.0",
"Expires" : "-1",
"Content-Length" : "795",
"Body" : "{\"@odata.context\":\"https://azs-sdk8dd175462649.search.windows.net/indexes('hotels')/$metadata#Collection(Microsoft.Azure.Search.V2019_05_06.IndexResult)\",\"value\":[{\"key\":\"1\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"2\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"3\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"4\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"5\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"6\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"7\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"8\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"9\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"10\",\"status\":true,\"errorMessage\":null,\"statusCode\":201}]}",
"Preference-Applied" : "odata.include-annotations=\"*\"",
"Content-Type" : "application/json; odata.metadata=minimal"
}
}, {
"Method" : "POST",
"Uri" : "https://azs-sdk8dd175462649.search.windows.net/indexes('hotels')/docs/search.post.search?api-version=2019-05-06",
"Headers" : {
"Content-Type" : "application/json; charset=utf-8"
},
"Response" : {
"Pragma" : "no-cache",
"retry-after" : "0",
"request-id" : "81c9644b-5dba-4a6d-a401-6022abeb5536",
"StatusCode" : "200",
"Date" : "Wed, 21 Aug 2019 12:37:42 GMT",
"Strict-Transport-Security" : "max-age=15724800; includeSubDomains",
"Cache-Control" : "no-cache",
"elapsed-time" : "20",
"OData-Version" : "4.0",
"Expires" : "-1",
"Content-Length" : "178",
"Body" : "{\"@odata.context\":\"https://azs-sdk8dd175462649.search.windows.net/indexes('hotels')/$metadata#docs(*)\",\"value\":[{\"@search.score\":1.8411939,\"HotelName\":\"Roach Motel\",\"Rating\":1}]}",
"Preference-Applied" : "odata.include-annotations=\"*\"",
"Content-Type" : "application/json; odata.metadata=minimal"
}
} ],
"variables" : [ ]
}

0 comments on commit c1efed5

Please sign in to comment.