private async Task <List <GlobalSearchHit> > SearchForAddresses(string searchString, int maxHits) { var query = new SearchParameters { Text = searchString, QueryBy = "roadNameHouseNumber,postDistrictCode,postDistrictName,townName", PerPage = maxHits.ToString(), LimitHits = maxHits.ToString(), QueryByWeights = "5,3,3,2" }; var searchResult = await _typesenseClient.Search <OfficialAccessAddressSearchHit>("Addresses", query).ConfigureAwait(false); List <GlobalSearchHit> result = new(); foreach (var hit in searchResult.Hits) { var xEtrs = Double.Parse(hit.Document.EastCoordinate, CultureInfo.InvariantCulture); var yEtrs = Double.Parse(hit.Document.NorthCoordinate, CultureInfo.InvariantCulture); var wgs84Coord = UTM32WGS84Converter.ConvertFromUTM32NToWGS84(xEtrs, yEtrs); var globalHit = new GlobalSearchHit(hit.Document.Id, "accessAddress", GetAddressLabel(hit.Document), wgs84Coord[0], wgs84Coord[1], xEtrs, yEtrs); result.Add(globalHit); } return(result); }
private async Task <List <GlobalSearchHit> > SearchForNodes(string searchString, int maxHits) { var query = new SearchParameters { Text = searchString, QueryBy = "name", PerPage = maxHits.ToString(), LimitHits = maxHits.ToString(), NumberOfTypos = "0" }; var searchResult = await _typesenseClient.Search <RouteNodeSearchHit>("RouteNodes", query).ConfigureAwait(false); RouteNetworkElementIdList routeNodeIds = new(); foreach (var hit in searchResult.Hits) { routeNodeIds.Add(hit.Document.Id); } var routeNodeQueryResult = await _queryDispatcher.HandleAsync <GetRouteNetworkDetails, Result <GetRouteNetworkDetailsResult> >( new GetRouteNetworkDetails(routeNodeIds) { RouteNetworkElementFilter = new RouteNetworkElementFilterOptions() { IncludeCoordinates = true } } ).ConfigureAwait(false); List <GlobalSearchHit> result = new(); if (routeNodeQueryResult.IsSuccess) { foreach (var hit in searchResult.Hits) { var etrsCoord = ConvertPointGeojsonToCoordArray(routeNodeQueryResult.Value.RouteNetworkElements[hit.Document.Id].Coordinates); var wgs84Coord = UTM32WGS84Converter.ConvertFromUTM32NToWGS84(etrsCoord[0], etrsCoord[1]); var globalHit = new GlobalSearchHit(hit.Document.Id, "routeNode", hit.Document.Name, wgs84Coord[0], wgs84Coord[1], etrsCoord[0], etrsCoord[1]); result.Add(globalHit); } } return(result); }