Prawidłowe indeksowanie wartości szerokości i długości geograficznej w Lucene

Pracuję nad funkcjonalnością „amerykańskiego najbliższego wyszukiwania w obrębie danego promienia” przy użyciu interfejsu API Lucene. Indeksuję miejskie i długie wartości miasta w Lucene w następujący sposób:

<code>doc.Add(new Field("latitude", paddedLatitude, Field.Store.YES, Field.Index.UN_TOKENIZED));

doc.Add(new Field("longitude", paddedLongitude, Field.Store.YES, Field.Index.UN_TOKENIZED));
</code>

Ponieważ Lucene rozumie tylko łańcuchy, a nie liczby, dopełniam długie i długie wartości.

Na przykład, jeśli oryginalne są długie i równe odpowiednio 41.811846 i -87,820628, po dopełnieniu wartości wyglądają następująco:

paddedLatitude -> "0041.811846" i paddedLongitude -> "- 087.820628"

Robię to samo dopełnianie podczas budowania najbliższego zapytania o miasto (przy użyciu klasy ConstantScoreRangeQuery Lucene).

Biorąc pod uwagę fakt, że wartości lat i długie mogą być liczbami dziesiętnymi / ujemnymi, czy jest to właściwe podejście do ich indeksowania, aby uzyskać poprawne najbliższe miasta w wynikach wyszukiwania, gdy lucene wykona liczbę operacji Zakres / porównanie tych wartości?

Dzięki.

questionAnswers(2)

yourAnswerToTheQuestion