Last active
October 4, 2024 11:08
-
-
Save isaacabraham/ee50e72c9ee4978a2af62a582221dba8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
City | State | Latitude | Longitude | |
---|---|---|---|---|
MILAN | IL | 41.453089 | -90.5720803 | |
WATERLOO | IA | 42.492786 | -92.3425775 | |
JACKSON | TN | 35.6145169 | -88.81394689999999 | |
BIRMINGHAM | AL | 33.5185892 | -86.8103567 | |
SPARKS | NV | 39.5349112 | -119.7526886 | |
NEWTON | NC | 35.6698552 | -81.22147079999999 | |
DENVER | CO | 39.7392358 | -104.990251 | |
TERRE HAUTE | IN | 39.4667034 | -87.41390919999999 | |
FLORENCE | KY | 38.9989499 | -84.62661109999999 | |
MERRIAM | KS | 39.0236165 | -94.6935701 | |
NEW YORK | NY | 40.7127753 | -74.0059728 | |
CLEVELAND | OH | 41.49932 | -81.6943605 | |
AUBURN | MA | 42.1945385 | -71.8356271 | |
BOLINGBROOK | IL | 41.69864159999999 | -88.0683955 | |
CHICAGO | IL | 41.8781136 | -87.6297982 | |
BALTIMORE | MD | 39.2903848 | -76.6121893 | |
CHESAPEAKE | VA | 36.7682088 | -76.2874927 | |
GREEN BAY | WI | 44.5133188 | -88.0132958 | |
MILWAUKEE | WI | 43.0389025 | -87.9064736 | |
MISSISSAUGA | ON | 43.5890452 | -79.6441198 | |
SAINT PAUL | MN | 44.9537029 | -93.0899578 | |
ELYRIA | OH | 41.3683798 | -82.10764859999999 | |
EAST MOLINE | IL | 41.5008673 | -90.4442979 | |
ORANGE | VA | 38.2454106 | -78.1108342 | |
TLALNEPANTLA DE BAZ | ESTADO DE MEXICO | 19.5345279 | -99.1907364 | |
NEW HYDE PARK | NY | 40.7351018 | -73.6879082 | |
WAUKESHA | WI | 43.0116784 | -88.2314813 | |
FARGO | ND | 46.8771863 | -96.7898034 | |
SANTA FE SPRINGS | CA | 33.9472359 | -118.0853451 | |
PHOENIX | AZ | 33.4483771 | -112.0740373 | |
DALLAS | TX | 32.7766642 | -96.7969879 | |
HAUPPAUGE | NY | 40.8256536 | -73.2026138 | |
FAIRPORT | NY | 43.0986742 | -77.44193779999999 | |
MOUNT VERNON | IL | 38.3172714 | -88.9031201 | |
WALTHAM | MA | 42.3764852 | -71.2356113 | |
KENILWORTH | NJ | 40.6764911 | -74.2907032 | |
MANASSAS | VA | 38.7509488 | -77.47526669999999 | |
ELMHURST | IL | 41.8994744 | -87.9403418 | |
ROBBINSVILLE | NJ | 40.2162036 | -74.6195327 | |
CHARLOTTE | NC | 35.2270869 | -80.8431267 | |
COOKEVILLE | TN | 36.162839 | -85.5016423 | |
LOUISVILLE | KY | 38.2526647 | -85.7584557 | |
MISSOULA | MT | 46.8721284 | -113.9940314 | |
COLMAR | PA | 40.2687247 | -75.2552829 | |
ERIE | PA | 42.12922409999999 | -80.085059 | |
TONAWANDA | NY | 42.9886849 | -78.8723971 | |
SEDALIA | MO | 38.7044609 | -93.2282613 | |
WISCONSIN RAPIDS | WI | 44.38357630000001 | -89.8173465 | |
FORT WORTH | TX | 32.7554883 | -97.3307658 | |
DAYTON | OH | 39.7589478 | -84.1916069 | |
HARRISONBURG | VA | 38.4495688 | -78.8689155 | |
NASHVILLE | TN | 36.1626638 | -86.7816016 | |
KAUKAUNA | WI | 44.2780432 | -88.27205029999999 | |
RALEIGH | NC | 35.7795897 | -78.6381787 | |
HANAHAN | SC | 32.9305786 | -80.0031833 | |
SPRINGFIELD | MO | 37.2089572 | -93.2922989 | |
BLOOMFIELD | CT | 41.826488 | -72.73009449999999 | |
BEDFORD | NH | 42.9463291 | -71.51320079999999 | |
LOS ANGELES | CA | 34.0522342 | -118.2436849 | |
EAGAN | MN | 44.8041322 | -93.1668858 | |
SAGINAW | MI | 43.4194699 | -83.9508068 | |
SAVANNAH | GA | 32.0808989 | -81.091203 | |
CYPRESS | TX | 29.9716905 | -95.6937856 | |
ADDISON | IL | 41.931696 | -87.9889556 | |
ALTOONA | PA | 40.5186809 | -78.3947359 | |
DANVILLE | VA | 36.5859718 | -79.39502279999999 | |
CHARLESTON | SC | 32.7764749 | -79.93105120000001 | |
VALLEY VIEW | OH | 41.3878312 | -81.6045685 | |
HARTFORD | CT | 41.7658043 | -72.6733723 | |
SOUTH BURLINGTON | VT | 44.4669941 | -73.1709604 | |
LITHIA SPRINGS | GA | 33.7939953 | -84.6604899 | |
LANSING | MI | 42.732535 | -84.5555347 | |
CAMARILLO | CA | 34.2163937 | -119.0376023 | |
PORTLAND | OR | 45.515232 | -122.6783853 | |
SHEBOYGAN | WI | 43.7508284 | -87.71453 | |
VESTAL | NY | 42.0855898 | -76.053575 | |
GRAND ISLAND | NE | 40.9263957 | -98.3420118 | |
BANGOR | ME | 44.8016128 | -68.7712257 | |
ATLANTA | GA | 33.7489954 | -84.3879824 | |
ROCHESTER | NY | 43.15657789999999 | -77.6088465 | |
EARTH CITY | MO | 38.7699175 | -90.4667501 | |
ALLSTON | MA | 42.3555087 | -71.1328247 | |
GERMANTOWN | WI | 43.2286174 | -88.1103691 | |
NORCROSS | GA | 33.9411081 | -84.2137443 | |
WHEELING | IL | 42.1391927 | -87.9289591 | |
UPLAND | CA | 34.09751 | -117.6483876 | |
TRACY | CA | 37.7395818 | -121.4260018 | |
FARMERS BRANCH | TX | 32.9265137 | -96.8961151 | |
SPRINGFIELD | MA | 42.1014831 | -72.589811 | |
JOPLIN | MO | 37.08422710000001 | -94.513281 | |
MADISON HEIGHTS | MI | 42.4858692 | -83.1052028 | |
HICKORY | NC | 35.7344538 | -81.3444573 | |
CANTON | MI | 42.3086444 | -83.48211599999999 | |
WILLISTON | VT | 44.4454432 | -73.099194 | |
PANAMA CITY | FL | 30.1588129 | -85.6602058 | |
PLYMOUTH | MN | 45.0105194 | -93.4555093 | |
EL CENTRO | CA | 32.792 | -115.5630514 | |
MIAMI | FL | 25.7616798 | -80.1917902 | |
ELK GROVE VILLAGE | IL | 42.0039178 | -87.9703461 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#r "nuget:Typesense" | |
#r "nuget:FSharp.Data" | |
open Microsoft.Extensions.DependencyInjection | |
open Typesense | |
open Typesense.Setup | |
let typesense = | |
let provider = | |
ServiceCollection() | |
.AddTypesenseClient(fun config -> | |
config.ApiKey <- "typesense" | |
config.Nodes <- [ new Node("localhost", "8108", "http") ]) | |
.BuildServiceProvider() | |
provider.GetService<ITypesenseClient>() | |
let schema = | |
Schema( | |
"location", | |
[ | |
Field("state", FieldType.String) | |
Field("city", FieldType.String) | |
Field("location", FieldType.GeoPoint) | |
] | |
) | |
type Location = { | |
State: string | |
City: string | |
Location: float array | |
} | |
type GeoLocations = FSharp.Data.CsvProvider<"locations.csv"> | |
let parsed = | |
GeoLocations.GetSample().Rows | |
|> Seq.map (fun line -> { | |
State = line.State | |
City = line.City | |
Location = [| float line.Latitude; float line.Longitude |] | |
}) | |
typesense.DeleteCollection(schema.Name).Result | |
typesense.CreateCollection(schema).Result | |
typesense.ImportDocuments(schema.Name, parsed).Result | |
/// Helper to quickly get an async result within a pipeline. Blocks, don't use in production! | |
let result (task: System.Threading.Tasks.Task<_>) = task.Result | |
// basic search | |
let basicSearchResults = | |
typesense.Search<Location>(schema.Name, SearchParameters("MA", "*")) | |
|> result | |
|> _.Hits | |
|> Seq.map (fun (hit: Hit<_>) -> {| | |
Score = hit.TextMatchInfo.Score | |
Document = hit.Document | |
|}) | |
|> Seq.toArray | |
// search with geolocation | |
let locationResults = | |
let parameters = | |
SearchParameters( | |
"*", | |
"*", | |
FilterBy = "location:(40.7127753, -74.0059728, 50 km)", | |
SortBy = "location(40.7127753, -74.0059728):asc" | |
) | |
typesense.Search("location", parameters) | |
|> result | |
|> _.Hits | |
|> Seq.map (fun (hit: Hit<_>) -> hit.GeoDistanceMeters["location"], hit.Document.City, hit.Document.State) | |
|> Seq.toArray |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment