Skip to content

Instantly share code, notes, and snippets.

@isaacabraham
Last active October 4, 2024 11:08
Show Gist options
  • Save isaacabraham/ee50e72c9ee4978a2af62a582221dba8 to your computer and use it in GitHub Desktop.
Save isaacabraham/ee50e72c9ee4978a2af62a582221dba8 to your computer and use it in GitHub Desktop.
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
#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