protected void TestCanSearchWithSynonyms()
        {
            SearchServiceClient searchClient = Data.GetSearchServiceClient();

            const string SynonymMapName = "names";
            var          synonymMap     = new SynonymMap(name: SynonymMapName, synonyms: "luxury,fancy");

            searchClient.SynonymMaps.Create(synonymMap);

            SearchIndexClient client = GetClientForQuery();
            Index             index  = searchClient.Indexes.Get(client.IndexName);

            index.Fields.First(f => f.Name == "hotelName").SynonymMaps = new[] { SynonymMapName };

            searchClient.Indexes.CreateOrUpdate(index);

            // When this test runs live, it runs against a free service that has 3 replicas.
            // Sometimes the synonym map update doesn't make it to the replica that handles
            // the query below, causing a test failure. We wait here to increase the odds of
            // consistency and decrease the likelihood of spurious test failures.
            SearchTestUtilities.WaitForSynonymMapUpdate();

            var searchParameters =
                new SearchParameters()
            {
                QueryType    = QueryType.Full,
                SearchFields = new[] { "hotelName" },
                Select       = new[] { "hotelName", "rating" }
            };

            DocumentSearchResult <Hotel> response =
                client.Documents.Search <Hotel>("luxury", searchParameters);

            var expectedDoc = new Hotel()
            {
                HotelName = "Fancy Stay", Rating = 5
            };

            Assert.NotNull(response.Results);
            Assert.Equal(1, response.Results.Count);
            Assert.Equal(expectedDoc, response.Results.First().Document);
        }