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.