public async Task Search() { WebRequest req = WebRequest.Create(SearchUrl + "&json=true"); WebResponse response = await req.GetResponseAsync(); using StreamReader reader = new StreamReader(response.GetResponseStream()); string json = reader.ReadToEnd(); SearchResultWrapper result = SerializerService.Deserialize <SearchResultWrapper>(json); if (!result.Success) { throw new Exception("Did not succede"); } Application.Current.Dispatcher.Invoke(() => { this.PopularToday.Clear(); if (result.SearchResults != null) { foreach (SearchResult searchResult in result.SearchResults) { this.PopularToday.Add(searchResult); } } }); }
public IActionResult Search(string id, [FromBody] SearchRequest request) { if (GlobalStore.ServiceAliases.IsExist(id)) { id = GlobalStore.ServiceAliases.Get(id); } var validationResult = serviceManager.ValidateIfServiceActive(id, ServiceTypeEnum.Search); if (validationResult != null) { return(validationResult); } var defaultSettings = GlobalStore.ActivatedSearches.Get(id).SearchSettingsWrapper; if (request.AutoCompleteSettings != null) { validationResult = Validate(request.AutoCompleteSettings); if (validationResult != null) { return(validationResult); } } if (request.ClassifierSettings != null) { validationResult = Validate(request.ClassifierSettings); if (validationResult != null) { return(validationResult); } } if (request.SearchSettings != null) { validationResult = Validate(defaultSettings.DataSetName, request.SearchSettings); if (validationResult != null) { return(validationResult); } } var searchSettings = MergeSettings( defaultSettings, request.AutoCompleteSettings, request.ClassifierSettings, request.SearchSettings); var dataSet = GlobalStore.DataSets.Get(searchSettings.DataSetName); var result = new SearchResultWrapper(); searchHandler.SaveSearchRequest(searchSettings, request); var documentQuery = queryFactory.GetDocumentQuery(dataSet.DataSet.Name); var searchResponse = documentQuery.Search( searchSettings.AutoCompleteSettings, searchSettings.SearchSettings, request.Text, dataSet.DocumentFields, dataSet.DataSet.TagField, dataSet.DataSet.InterpretedFields, defaultSettings.SearchSettings.Filter, defaultSettings.SearchSettings.Weights ); // AUTOCOMPLETE result.AutoCompleteResultList = searchResponse.Suggest?[DocumentQuery.SuggestName].SelectMany(s => s.Options).Where(o => o.CollateMatch).Select(o => new AutoCompleteResult { Text = o.Text, Score = o.Score, }).ToList(); // SEARCH result.SearchResultList = searchResponse.Hits.Select(d => new SearchResult { Document = d.Source.DocumentObject, DocumentId = d.Id, Score = d.Score }).ToList(); result.Total = (int)searchResponse.Total; // CLASSIFIER if (searchSettings.ClassifierSettings?.Count > 0) { var searchMatchCategories = (dataSet.TagIsArray ? result.SearchResultList.SelectMany(d => ((Array)DocumentHelper.GetValue(d.Document, dataSet.DataSet.TagField)).Cast <string>()) : result.SearchResultList.Select(d => DocumentHelper.GetValue(d.Document, dataSet.DataSet.TagField).ToString())) .Distinct() .ToDictionary(t => t); var classifierId = GlobalStore.ServiceAliases.IsExist(searchSettings.ClassifierSettings.Id) ? GlobalStore.ServiceAliases.Get(searchSettings.ClassifierSettings.Id) : searchSettings.ClassifierSettings.Id; var classifier = GlobalStore.ActivatedClassifiers.Get(classifierId); //if the classifier is not activated right now if (classifier != null) { var resultsList = classifierHandler.Recommend(classifierId, request.Text, searchSettings.ClassifierSettings.Count, classifier.ClassifierEmphasizedTagIds.Any(), true); result.ClassifierResultList = resultsList.Select(r => new SearchClassifierRecommendationResult { TagId = r.TagId, Score = r.Score, Tag = r.Tag, SearchResultMatch = searchMatchCategories.ContainsKey(r.TagId) }).ToList(); //AUTOCOMPLETE foreach (var ac in result.AutoCompleteResultList) { var acResultsList = classifierHandler.Recommend(classifierId, ac.Text, searchSettings.ClassifierSettings.Count, classifier.ClassifierEmphasizedTagIds.Any(), true); ac.ClassifierResultList = resultsList.Select(r => new SearchClassifierRecommendationResult { TagId = r.TagId, Score = r.Score, Tag = r.Tag, SearchResultMatch = searchMatchCategories.ContainsKey(r.TagId) }).ToList(); } } } return(new OkObjectResult(result)); }