Nie mogę wskazać ci istniejącej biblioteki, która ma lepszą wydajność, ale jak pamiętam, GeoModel jest open source i kod nie jest trudny do zrozumienia. Odkryliśmy, że możemy wprowadzić pewne poprawki prędkości, dostosowując kod do naszego scenariusza.
Na przykład, jeśli nie potrzebujesz najbliższej-n, potrzebujesz tylko wyników X z określonego obwiedni lub promienia, prawdopodobnie możesz poprawić prędkość GeoModel, ponieważ GeoModel musi obecnie uzyskać każdy rekord w odpowiednim geohashu a następnie sortuje w pamięci najbliżej. (Szczegóły tej implementacji pozostawione jako ćwiczenie dla czytnika.)
Możesz również rozważyć dostrojenie ilości poziomów geohash, których używasz. Jeśli masz dużo gęstych danych i przeszukujesz małe obszary, możesz znacznie zwiększyć wydajność, zachowując 16 poziomów zamiast 8 lub 12.
(Nie patrzę teraz na źródło GeoModel, ale pamiętam, kiedy ostatnio używał go kilka miesięcy temu, więc weź to z przymrużeniem oka i zanurz się w kodzie źródłowym.)