Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }