Пример #1
0
        public void CreateIndex <T>(string indexName, IndexConfig settings)
        {
            var client = _provider.CreateSearchServiceClient();

            var buIndexDefinition = new Index()
            {
                Name   = indexName,
                Fields = FieldBuilder.BuildForType <T>()
            };

            DeleteBUIndexIfExists(client, indexName);

            client.Indexes.Create(buIndexDefinition);
        }
Пример #2
0
 public void UploadToIndex <T>(string indexName, IEnumerable <T> data) where T : class
 {
     try
     {
         var batch = UploadIndexBatch(data);
         _clientProvider.CreateSearchServiceClient()
         .Indexes.GetClient(indexName)
         .Documents.Index(batch);
     }
     catch (IndexBatchException e)
     {
         // Sometimes when your Search service is under load, indexing will fail for some of the documents in
         // the batch. Depending on your application, you can take compensating actions like delaying and
         // retrying. For this simple demo, we just log the failed document keys and continue.
     }
 }
Пример #3
0
        public IEnumerable <Hotel> Search(string searchTerm)
        {
            var srv       = _clientProvider.CreateSearchServiceClient();
            var searchApi = srv.Indexes.GetClient(BusinessUnitIndexName);

            var selector = new PropertySelector <Hotel>(
                x => x.HotelName,
                x => x.Tags,
                x => x.Location,
                x => x.Category);

            var searchFields = new PropertySelector <Hotel>(x => x.HotelName);

            var parameters = new SearchParameters
            {
                Select       = selector.SelectedProperties,
                QueryType    = QueryType.Full,
                SearchFields = searchFields.SelectedProperties
            };

            var results = searchApi.Documents.Search <Hotel>($"{searchTerm}~", parameters);

            return(results.Results.Select(r => r.Document));
        }