diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/FieldBuilder.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/FieldBuilder.java index e741a872772d..ef889b140839 100644 --- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/FieldBuilder.java +++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/FieldBuilder.java @@ -4,10 +4,10 @@ package com.azure.search.documents.indexes; import com.azure.core.util.logging.ClientLogger; -import com.azure.search.documents.models.GeoPoint; import com.azure.search.documents.indexes.models.LexicalAnalyzerName; import com.azure.search.documents.indexes.models.SearchField; import com.azure.search.documents.indexes.models.SearchFieldDataType; +import com.azure.search.documents.models.GeoPoint; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -113,7 +113,7 @@ private static SearchField buildNoneParameterizedType(java.lang.reflect.Field cl private static boolean isArrayOrList(Type type) { - return type.getClass().isArray() || isList(type); + return isList(type) || ((Class) type).isArray(); } private static boolean isList(Type type) { @@ -140,13 +140,13 @@ private static SearchField buildCollectionField(java.lang.reflect.Field classFie } private static Type getComponentOrElementType(Type arrayOrListType, ClientLogger logger) { - if (arrayOrListType.getClass().isArray()) { - return arrayOrListType.getClass().getComponentType(); - } if (isList(arrayOrListType)) { ParameterizedType pt = (ParameterizedType) arrayOrListType; return pt.getActualTypeArguments()[0]; } + if (((Class) arrayOrListType).isArray()) { + return ((Class) arrayOrListType).getComponentType(); + } throw logger.logExceptionAsError(new RuntimeException(String.format( "Collection type %s is not supported.", arrayOrListType.getTypeName()))); } @@ -156,13 +156,7 @@ private static SearchField convertToBasicSearchField(java.lang.reflect.Field cla SearchField searchField = new SearchField(); searchField.setName(classField.getName()); SearchFieldDataType dataType = covertToSearchFieldDataType(classField.getGenericType(), false, logger); - searchField.setType(dataType) - .setKey(false) - .setSearchable(false) - .setFacetable(false) - .setHidden(false) - .setFilterable(false) - .setSortable(false); + searchField.setType(dataType); return searchField; } diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/SearchableFieldProperty.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/SearchableFieldProperty.java index 76c8e016866e..1d2b32f7d544 100644 --- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/SearchableFieldProperty.java +++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/SearchableFieldProperty.java @@ -75,6 +75,11 @@ /** * Optional arguments defines the array of synonymMaps used for the field. + * This option can be used only with searchable fields. Currently only one + * synonym map per field is supported. Assigning a synonym map to a field + * ensures that query terms targeting that field are expanded at query-time + * using the rules in the synonym map. This attribute can be changed on + * existing fields. * * @return An array of synonym map values. Or default to empty string array. */ diff --git a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ComplexField.java b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ComplexField.java index 7852ced1b350..97795d4bb5e7 100644 --- a/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ComplexField.java +++ b/sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/models/ComplexField.java @@ -51,12 +51,6 @@ public ComplexField setFields(List fields) { public SearchField build() { return new SearchField().setName(super.getName()) .setType(super.getDataType()) - .setFields(fields) - .setKey(false) - .setFilterable(false) - .setSortable(false) - .setHidden(false) - .setSearchable(false) - .setFacetable(false); + .setFields(fields); } } diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/IndexingSyncTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/IndexingSyncTests.java index d05c6d5ff919..88a0ed5ccbc5 100644 --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/IndexingSyncTests.java +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/IndexingSyncTests.java @@ -432,7 +432,7 @@ public void canMergeStaticallyTypedDocuments() throws ParseException { .bedOptions("1 Queen Bed") .sleepsCount(2) .smokingAllowed(true) - .tags(Collections.singletonList("vcr/dvd")), + .tags(new String[] { "vcr/dvd" }), new HotelRoom() .description("Budget Room, 1 King Bed (Mountain View)") .descriptionFr("Chambre Économique, 1 très grand lit (Mountain View)") @@ -441,7 +441,7 @@ public void canMergeStaticallyTypedDocuments() throws ParseException { .bedOptions("1 King Bed") .sleepsCount(2) .smokingAllowed(true) - .tags(Arrays.asList("vcr/dvd", "jacuzzi tub")) + .tags(new String[] {"vcr/dvd", "jacuzzi tub"}) )); // Update category, tags, parking included, rating, and rooms. Erase description, last renovation date, location and address. @@ -463,7 +463,7 @@ public void canMergeStaticallyTypedDocuments() throws ParseException { .baseRate(10.5) .bedOptions("1 Queen Bed") .sleepsCount(2) - .tags(Arrays.asList("vcr/dvd", "balcony")) + .tags(new String[] { "vcr/dvd", "balcony" }) )); // Fields whose values get updated are updated, and whose values get erased remain the same. @@ -492,7 +492,7 @@ public void canMergeStaticallyTypedDocuments() throws ParseException { .baseRate(10.5) .bedOptions("1 Queen Bed") .sleepsCount(2) - .tags(Arrays.asList("vcr/dvd", "balcony")) + .tags(new String[] { "vcr/dvd", "balcony" }) )); List originalDocs = new ArrayList<>(); @@ -561,7 +561,7 @@ public void canSetExplicitNullsInStaticallyTypedDocument() throws ParseException .bedOptions("1 Queen Bed") .sleepsCount(2) .smokingAllowed(true) - .tags(Collections.singletonList("vcr/dvd")), + .tags(new String[] { "vcr/dvd" }), new HotelRoom() .description("Budget Room, 1 King Bed (Mountain View)") .descriptionFr("Chambre Économique, 1 très grand lit (Mountain View)") @@ -570,7 +570,7 @@ public void canSetExplicitNullsInStaticallyTypedDocument() throws ParseException .bedOptions("1 King Bed") .sleepsCount(2) .smokingAllowed(true) - .tags(Arrays.asList("vcr/dvd", "jacuzzi tub")) + .tags(new String[] { "vcr/dvd", "jacuzzi tub" }) )); LoudHotel updatedDoc = new LoudHotel() @@ -589,7 +589,7 @@ public void canSetExplicitNullsInStaticallyTypedDocument() throws ParseException .type("Budget Room") .baseRate(10.5) .smokingAllowed(false) - .tags(Arrays.asList("vcr/dvd", "balcony")) + .tags(new String[] { "vcr/dvd", "balcony" }) )); LoudHotel expectedDoc = new LoudHotel() @@ -621,7 +621,7 @@ public void canSetExplicitNullsInStaticallyTypedDocument() throws ParseException .bedOptions(null) .sleepsCount(null) .smokingAllowed(false) - .tags(Arrays.asList("vcr/dvd", "balcony")) + .tags(new String[] { "vcr/dvd", "balcony" }) )); List originalDocs = new ArrayList<>(); diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/LookupSyncTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/LookupSyncTests.java index c3cca8f51c54..87b38667c13d 100644 --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/LookupSyncTests.java +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/LookupSyncTests.java @@ -406,7 +406,7 @@ Hotel prepareEmptyHotel() { return new Hotel().hotelId("1") .tags(new ArrayList<>()) .rooms(Collections.singletonList( - new HotelRoom().tags(new ArrayList<>()) + new HotelRoom().tags(new String[0]) )); } @@ -437,7 +437,7 @@ Hotel prepareSelectedFieldsHotel() throws ParseException { .bedOptions("1 King Bed") .sleepsCount(2) .smokingAllowed(true) - .tags(Collections.singletonList("coffee maker")), + .tags(new String[] { "coffee maker" }), new HotelRoom() .description("Budget Room, 1 Queen Bed (Amenities)") .descriptionFr("Chambre Économique, 1 grand lit (Services)") @@ -446,7 +446,7 @@ Hotel prepareSelectedFieldsHotel() throws ParseException { .bedOptions("1 Queen Bed") .sleepsCount(2) .smokingAllowed(false) - .tags(Collections.singletonList("coffee maker")))); + .tags(new String[] { "coffee maker" }))); } ModelWithPrimitiveCollections preparePrimitivesModel() { diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/FieldBuilderServiceTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/FieldBuilderServiceTests.java new file mode 100644 index 000000000000..80625896659d --- /dev/null +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/FieldBuilderServiceTests.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.search.documents.indexes; + +import com.azure.search.documents.SearchTestBase; +import com.azure.search.documents.indexes.models.SearchIndex; +import com.azure.search.documents.indexes.models.SynonymMap; +import com.azure.search.documents.test.environment.models.Hotel; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static com.azure.search.documents.TestHelpers.assertObjectEquals; + +public class FieldBuilderServiceTests extends SearchTestBase { + private SearchIndexClient client; + private final List indexesToDelete = new ArrayList<>(); + private final List synonymMapsToDelete = new ArrayList<>(); + private SearchIndex index; + String synonymMapName = "fieldbuilder"; + + @Override + protected void beforeTest() { + super.beforeTest(); + client = getSearchIndexClientBuilder().buildClient(); + index = new SearchIndex().setName(testResourceNamer.randomName("fieldbuilder", 32)); + } + + @Override + protected void afterTest() { + super.afterTest(); + + for (String index : indexesToDelete) { + client.deleteIndex(index); + } + + client.deleteSynonymMap(synonymMapName); + } + + @Test + public void createIndexWithFieldBuilder() { + SynonymMap synonymMap = new SynonymMap().setName(synonymMapName).setSynonyms("hotel,motel"); + client.createSynonymMap(synonymMap); + index.setFields(FieldBuilder.build(Hotel.class)); + client.createIndex(index); + indexesToDelete.add(index.getName()); + assertObjectEquals(index, client.getIndex(index.getName()), true); + } +} diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/FieldBuilderTest.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/FieldBuilderTests.java similarity index 80% rename from sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/FieldBuilderTest.java rename to sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/FieldBuilderTests.java index 833ce2aabdce..f2abad9ab2b2 100644 --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/FieldBuilderTest.java +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/FieldBuilderTests.java @@ -5,17 +5,16 @@ import com.azure.search.documents.TestHelpers; import com.azure.search.documents.indexes.models.ComplexField; -import com.azure.search.documents.indexes.models.LexicalAnalyzerName; import com.azure.search.documents.indexes.models.SearchField; import com.azure.search.documents.indexes.models.SearchFieldDataType; import com.azure.search.documents.indexes.models.SearchableField; import com.azure.search.documents.indexes.models.SimpleField; -import com.azure.search.documents.test.environment.models.Hotel; import com.azure.search.documents.test.environment.models.HotelAnalyzerException; import com.azure.search.documents.test.environment.models.HotelCircularDependencies; import com.azure.search.documents.test.environment.models.HotelSearchException; import com.azure.search.documents.test.environment.models.HotelSearchableExceptionOnList; import com.azure.search.documents.test.environment.models.HotelTwoDimensional; +import com.azure.search.documents.test.environment.models.HotelWithArray; import com.azure.search.documents.test.environment.models.HotelWithEmptyInSynonymMaps; import org.junit.jupiter.api.Test; @@ -28,13 +27,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -public class FieldBuilderTest { - @Test - public void hotelComparison() { - List actualFields = sortByFieldName(FieldBuilder.build(Hotel.class)); - List expectedFields = sortByFieldName(buildHotelFields()); - assertListFieldEquals(expectedFields, actualFields); - } +public class FieldBuilderTests { @Test public void hotelSearchableThrowException() { @@ -80,6 +73,13 @@ public void hotelAnalyzerException() { "either analyzer or both searchAnalyzer and indexAnalyzer"); } + @Test + public void hotelWithArrayType() { + List actualFields = sortByFieldName(FieldBuilder.build(HotelWithArray.class)); + List expectedFields = sortByFieldName(buildHotelWithArrayModel()); + assertListFieldEquals(expectedFields, actualFields); + } + private void assertListFieldEquals(List expected, List actual) { assertEquals(expected.size(), actual.size()); for (int i = 0; i < expected.size(); i++) { @@ -105,25 +105,11 @@ private List buildHotelInAddress() { return Collections.singletonList(hotel); } - private List buildHotelFields() { - SearchField hotelId = new SimpleField("hotelId", SearchFieldDataType.STRING, false).setSortable(true) - .setKey(true).build(); - SearchField hotelName = new SearchableField("hotelName", false).setAnalyzer(LexicalAnalyzerName.fromString("en.lucene")) + private List buildHotelWithArrayModel() { + SearchField hotelId = new SimpleField("hotelId", SearchFieldDataType.STRING, false).setKey(true) .setSortable(true).build(); - SearchField description = new SimpleField("description", SearchFieldDataType.STRING, false).build(); - SearchField category = new SimpleField("category", SearchFieldDataType.STRING, false).build(); SearchField tags = new SearchableField("tags", true).build(); - SearchField parkingIncluded = new SimpleField("parkingIncluded", SearchFieldDataType.BOOLEAN, false).build(); - SearchField smokingAllowed = new SimpleField("smokingAllowed", SearchFieldDataType.BOOLEAN, false).build(); - SearchField lastRenovationDate = new SimpleField("lastRenovationDate", SearchFieldDataType.DATE_TIME_OFFSET, false).build(); - SearchField rating = new SimpleField("rating", SearchFieldDataType.INT32, false).build(); - SearchField location = new SimpleField("location", SearchFieldDataType.GEOGRAPHY_POINT, false).build(); - SearchField address = new ComplexField("address", false) - .setFields(buildHotelAddressField()).build(); - SearchField rooms = new ComplexField("rooms", true).setFields(buildHotelRoomField()).build(); - - return Arrays.asList(hotelId, hotelName, description, category, tags, parkingIncluded, smokingAllowed, - lastRenovationDate, rating, location, address, rooms); + return Arrays.asList(hotelId, tags); } private List buildHotelAddressField() { diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/Hotel.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/Hotel.java index 60b5ba5d973a..db387ca649cd 100644 --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/Hotel.java +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/Hotel.java @@ -21,6 +21,7 @@ public class Hotel { @JsonProperty(value = "HotelName") private String hotelName; + @SimpleFieldProperty @JsonProperty(value = "Description") private String description; @@ -28,6 +29,7 @@ public class Hotel { @JsonProperty(value = "Description_fr") private String descriptionFr; + @SimpleFieldProperty @JsonProperty(value = "Category") private String category; diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelAddress.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelAddress.java index da6d53009fe2..71b4fd55da92 100644 --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelAddress.java +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelAddress.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class HotelAddress { - @SimpleFieldProperty(isKey = true, isFacetable = true) + @SimpleFieldProperty(isFacetable = true) @JsonProperty(value = "StreetAddress") private String streetAddress; @@ -19,7 +19,7 @@ public class HotelAddress { @JsonProperty(value = "StateProvince") private String stateProvince; - @SearchableFieldProperty(synonymMaps = {"America -> USA", "USA -> US"}) + @SearchableFieldProperty(synonymMaps = {"fieldbuilder"}) @JsonProperty(value = "Country") private String country; diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelRoom.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelRoom.java index 031d21e6be71..bb4aa4c4dc6f 100644 --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelRoom.java +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelRoom.java @@ -4,8 +4,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; - public class HotelRoom { @JsonProperty(value = "Description") private String description; @@ -29,7 +27,7 @@ public class HotelRoom { private Boolean smokingAllowed; @JsonProperty(value = "Tags") - private List tags; + private String[] tags; public String description() { @@ -95,11 +93,11 @@ public HotelRoom smokingAllowed(Boolean smokingAllowed) { return this; } - public List tags() { + public String[] tags() { return this.tags; } - public HotelRoom tags(List tags) { + public HotelRoom tags(String[] tags) { this.tags = tags; return this; } diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelWithArray.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelWithArray.java new file mode 100644 index 000000000000..061a71e67031 --- /dev/null +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/test/environment/models/HotelWithArray.java @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.search.documents.test.environment.models; + +import com.azure.search.documents.indexes.SearchableFieldProperty; +import com.azure.search.documents.indexes.SimpleFieldProperty; + +public class HotelWithArray { + @SimpleFieldProperty(isKey = true, isSortable = true) + private String hotelId; + + @SearchableFieldProperty + private String[] tags; +} diff --git a/sdk/search/azure-search-documents/src/test/resources/session-records/createIndexWithFieldBuilder.json b/sdk/search/azure-search-documents/src/test/resources/session-records/createIndexWithFieldBuilder.json new file mode 100644 index 000000000000..4ae1d90d6e20 --- /dev/null +++ b/sdk/search/azure-search-documents/src/test/resources/session-records/createIndexWithFieldBuilder.json @@ -0,0 +1,131 @@ +{ + "networkCallRecords" : [ { + "Method" : "POST", + "Uri" : "https://REDACTED.search.windows.net/synonymmaps?api-version=2019-05-06-Preview", + "Headers" : { + "User-Agent" : "azsdk-java-azure-search-documents/1.0.0-beta.4 (11.0.6; Windows 10 10.0)", + "x-ms-client-request-id" : "29838071-30cb-4e7b-8dfd-453ba32a1f9b", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "Pragma" : "no-cache", + "retry-after" : "0", + "request-id" : "29838071-30cb-4e7b-8dfd-453ba32a1f9b", + "StatusCode" : "201", + "Date" : "Thu, 28 May 2020 22:19:29 GMT", + "Strict-Transport-Security" : "max-age=15724800; includeSubDomains", + "Cache-Control" : "no-cache", + "client-request-id" : "29838071-30cb-4e7b-8dfd-453ba32a1f9b", + "ETag" : "W/\"0x8D8035530A0BA20\"", + "elapsed-time" : "29", + "OData-Version" : "4.0", + "Expires" : "-1", + "Content-Length" : "212", + "Body" : "{\"@odata.context\":\"https://sizhu-search.search.windows.net/$metadata#synonymmaps/$entity\",\"@odata.etag\":\"\\\"0x8D8035530A0BA20\\\"\",\"name\":\"fieldbuilder\",\"format\":\"solr\",\"synonyms\":\"hotel,motel\",\"encryptionKey\":null}", + "Preference-Applied" : "odata.include-annotations=\"*\"", + "x-ms-client-request-id" : "29838071-30cb-4e7b-8dfd-453ba32a1f9b", + "Content-Type" : "application/json; odata.metadata=minimal", + "Location" : "https://sizhu-search.search.windows.net/synonymmaps('fieldbuilder')?api-version=2019-05-06-Preview" + }, + "Exception" : null + }, { + "Method" : "POST", + "Uri" : "https://REDACTED.search.windows.net/indexes?api-version=2019-05-06-Preview", + "Headers" : { + "User-Agent" : "azsdk-java-azure-search-documents/1.0.0-beta.4 (11.0.6; Windows 10 10.0)", + "x-ms-client-request-id" : "ba690aeb-031b-40df-826a-cd6b5c0b5899", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "Pragma" : "no-cache", + "retry-after" : "0", + "request-id" : "ba690aeb-031b-40df-826a-cd6b5c0b5899", + "StatusCode" : "201", + "Date" : "Thu, 28 May 2020 22:19:30 GMT", + "Strict-Transport-Security" : "max-age=15724800; includeSubDomains", + "Cache-Control" : "no-cache", + "client-request-id" : "ba690aeb-031b-40df-826a-cd6b5c0b5899", + "ETag" : "W/\"0x8D8035531494D57\"", + "elapsed-time" : "958", + "OData-Version" : "4.0", + "Expires" : "-1", + "Content-Length" : "5596", + "Body" : "{\"@odata.context\":\"https://sizhu-search.search.windows.net/$metadata#indexes/$entity\",\"@odata.etag\":\"\\\"0x8D8035531494D57\\\"\",\"name\":\"fieldbuilder0952549f627c\",\"defaultScoringProfile\":null,\"fields\":[{\"name\":\"hotelId\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":true,\"facetable\":false,\"key\":true,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"hotelName\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":false,\"retrievable\":true,\"sortable\":true,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"en.lucene\",\"synonymMaps\":[]},{\"name\":\"description\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"category\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"tags\",\"type\":\"Collection(Edm.String)\",\"searchable\":true,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"parkingIncluded\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"smokingAllowed\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"lastRenovationDate\",\"type\":\"Edm.DateTimeOffset\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"rating\",\"type\":\"Edm.Int32\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"location\",\"type\":\"Edm.GeographyPoint\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"address\",\"type\":\"Edm.ComplexType\",\"fields\":[{\"name\":\"streetAddress\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"city\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"stateProvince\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"country\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[\"fieldbuilder\"]},{\"name\":\"postalCode\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]}]},{\"name\":\"rooms\",\"type\":\"Collection(Edm.ComplexType)\",\"fields\":[{\"name\":\"description\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"descriptionFr\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"type\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"baseRate\",\"type\":\"Edm.Double\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"bedOptions\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"sleepsCount\",\"type\":\"Edm.Int32\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"smokingAllowed\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"tags\",\"type\":\"Collection(Edm.String)\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]}]}],\"scoringProfiles\":[],\"corsOptions\":null,\"suggesters\":[],\"analyzers\":[],\"tokenizers\":[],\"tokenFilters\":[],\"charFilters\":[],\"encryptionKey\":null,\"similarity\":null}", + "Preference-Applied" : "odata.include-annotations=\"*\"", + "x-ms-client-request-id" : "ba690aeb-031b-40df-826a-cd6b5c0b5899", + "Content-Type" : "application/json; odata.metadata=minimal", + "Location" : "https://sizhu-search.search.windows.net/indexes('fieldbuilder0952549f627c')?api-version=2019-05-06-Preview" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.search.windows.net/indexes('fieldbuilder0952549f627c')?api-version=2019-05-06-Preview", + "Headers" : { + "User-Agent" : "azsdk-java-azure-search-documents/1.0.0-beta.4 (11.0.6; Windows 10 10.0)", + "x-ms-client-request-id" : "7f326f15-5c4c-48b1-9c87-7441a22646e7" + }, + "Response" : { + "Pragma" : "no-cache", + "retry-after" : "0", + "request-id" : "7f326f15-5c4c-48b1-9c87-7441a22646e7", + "StatusCode" : "200", + "Date" : "Thu, 28 May 2020 22:19:30 GMT", + "Strict-Transport-Security" : "max-age=15724800; includeSubDomains", + "Cache-Control" : "no-cache", + "client-request-id" : "7f326f15-5c4c-48b1-9c87-7441a22646e7", + "ETag" : "W/\"0x8D8035531494D57\"", + "elapsed-time" : "20", + "OData-Version" : "4.0", + "Expires" : "-1", + "Content-Length" : "5596", + "Body" : "{\"@odata.context\":\"https://sizhu-search.search.windows.net/$metadata#indexes/$entity\",\"@odata.etag\":\"\\\"0x8D8035531494D57\\\"\",\"name\":\"fieldbuilder0952549f627c\",\"defaultScoringProfile\":null,\"fields\":[{\"name\":\"hotelId\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":true,\"facetable\":false,\"key\":true,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"hotelName\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":false,\"retrievable\":true,\"sortable\":true,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"en.lucene\",\"synonymMaps\":[]},{\"name\":\"description\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"category\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"tags\",\"type\":\"Collection(Edm.String)\",\"searchable\":true,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"parkingIncluded\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"smokingAllowed\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"lastRenovationDate\",\"type\":\"Edm.DateTimeOffset\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"rating\",\"type\":\"Edm.Int32\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"location\",\"type\":\"Edm.GeographyPoint\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"address\",\"type\":\"Edm.ComplexType\",\"fields\":[{\"name\":\"streetAddress\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"city\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"stateProvince\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"country\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[\"fieldbuilder\"]},{\"name\":\"postalCode\",\"type\":\"Edm.String\",\"searchable\":false,\"filterable\":false,\"retrievable\":true,\"sortable\":false,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]}]},{\"name\":\"rooms\",\"type\":\"Collection(Edm.ComplexType)\",\"fields\":[{\"name\":\"description\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"descriptionFr\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"type\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"baseRate\",\"type\":\"Edm.Double\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"bedOptions\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"sleepsCount\",\"type\":\"Edm.Int32\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"smokingAllowed\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]},{\"name\":\"tags\",\"type\":\"Collection(Edm.String)\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"synonymMaps\":[]}]}],\"scoringProfiles\":[],\"corsOptions\":null,\"suggesters\":[],\"analyzers\":[],\"tokenizers\":[],\"tokenFilters\":[],\"charFilters\":[],\"encryptionKey\":null,\"similarity\":null}", + "Preference-Applied" : "odata.include-annotations=\"*\"", + "x-ms-client-request-id" : "7f326f15-5c4c-48b1-9c87-7441a22646e7", + "Content-Type" : "application/json; odata.metadata=minimal" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.search.windows.net/indexes('fieldbuilder0952549f627c')?api-version=2019-05-06-Preview", + "Headers" : { + "User-Agent" : "azsdk-java-azure-search-documents/1.0.0-beta.4 (11.0.6; Windows 10 10.0)", + "x-ms-client-request-id" : "c9888ce1-0c00-446e-a45f-8580fc292fc1" + }, + "Response" : { + "Strict-Transport-Security" : "max-age=15724800; includeSubDomains", + "Cache-Control" : "no-cache", + "client-request-id" : "c9888ce1-0c00-446e-a45f-8580fc292fc1", + "elapsed-time" : "390", + "Expires" : "-1", + "Pragma" : "no-cache", + "retry-after" : "0", + "request-id" : "c9888ce1-0c00-446e-a45f-8580fc292fc1", + "StatusCode" : "204", + "Date" : "Thu, 28 May 2020 22:19:31 GMT", + "x-ms-client-request-id" : "c9888ce1-0c00-446e-a45f-8580fc292fc1" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.search.windows.net/synonymmaps('fieldbuilder')?api-version=2019-05-06-Preview", + "Headers" : { + "User-Agent" : "azsdk-java-azure-search-documents/1.0.0-beta.4 (11.0.6; Windows 10 10.0)", + "x-ms-client-request-id" : "467cab3e-a997-4d7c-a27a-d009475254a7" + }, + "Response" : { + "Strict-Transport-Security" : "max-age=15724800; includeSubDomains", + "Cache-Control" : "no-cache", + "client-request-id" : "467cab3e-a997-4d7c-a27a-d009475254a7", + "elapsed-time" : "11", + "Expires" : "-1", + "Pragma" : "no-cache", + "retry-after" : "0", + "request-id" : "467cab3e-a997-4d7c-a27a-d009475254a7", + "StatusCode" : "204", + "Date" : "Thu, 28 May 2020 22:19:31 GMT", + "x-ms-client-request-id" : "467cab3e-a997-4d7c-a27a-d009475254a7" + }, + "Exception" : null + } ], + "variables" : [ "fieldbuilder0952549f627c" ] +} \ No newline at end of file