Я работаю над "поиском ближайшего города в США в пределах заданного радиуса", используя Lucene API.
Индексирую значения широты и долготы города в Lucene следующим образом:
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));
Поскольку Lucene понимает только строки, а не числа, я добавляю значения lat и long.
Например, если исходные значения lat и long равны 41.811846 и -87.820628, соответственно, после заполнения значения выглядят следующим образом:
paddedLatitude -> "0041.811846" и paddedLongitude -> "- 087.820628"
Я делаю то же самое при заполнении запроса ближайшего города (используя класс Lucene ConstantScoreRangeQuery).
Учитывая тот факт, что значения lat и long могут быть десятичными / отрицательными числами, является ли это правильным подходом для индексации их, чтобы я мог получить правильные ближайшие города в результатах поиска, когда lucene будет выполнять операцию Range / сравнения чисел с этими значения?
Спасибо.