正在使用 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 对这些值执行数字范围/比较操作时,我可以在搜索结果中获得正确的最近城市?
谢谢。