Richtige Indizierung von Breiten- und Längengraden in Lucene

Ich arbeite an einer "US-basierten Suche nach nächstgelegenen Städten in einem bestimmten Umkreis" -Funktionalität unter Verwendung der Lucene-API. Indiziere die Lat- und Long-Werte der Stadt in Lucene wie folgt:

<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>

Da Lucene nur Strings und keine Zahlen versteht, werden Lat- und Long-Werte aufgefüllt.

Wenn beispielsweise der ursprüngliche Lat und Long nach dem Auffüllen 41.811846 bzw. -87.820628 sind, sehen die Werte folgendermaßen aus:

paddedLatitude -> "0041.811846" und paddedLongitude -> "- 087.820628"

Das gleiche Auffüllen wird beim Erstellen der nächsten Stadtabfrage ausgeführt (mithilfe der ConstantScoreRangeQuery-Klasse von Lucene).

Ist dies angesichts der Tatsache, dass lat- und long-Werte Dezimal- / Negativzahlen sein können, die richtige Methode, um sie zu indizieren, damit ich die nächstgelegenen Städte in den Suchergebnissen korrekt finde, wenn lucene mit diesen Werten eine Zahlenbereichs- / Vergleichsoperation durchführt?

Vielen Dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage