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.