Estoy trabajando en una funcionalidad de "búsqueda de ciudad más cercana dentro de un radio determinado" con la API de Lucene. los valores de latitud y de larga Am indexación ciudad en Lucene como sigue:Corregir correctamente los valores de latitud y longitud en 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));
Desde Lucene sólo entiende cuerdas y no números, Am carnes de los valores de latitud y longitud.
Por ejemplo, si son originales y 41.811846 -87.820628 respectivamente, después de relleno, los valores parecen lat y largo:
paddedLatitude -> "0.041,811846" y paddedLongitude -> "- 087,820628"
Estoy haciendo el mismo relleno mientras construyo la consulta de la ciudad más cercana (usando la clase ConstantScoreRangeQuery de Lucene).
Dado que los valores lat y long podrían ser números decimales/negativos, ¿es este el enfoque correcto para indexarlos para obtener las ciudades más cercanas correctas en los resultados de búsqueda cuando lucene realice una operación de Rango/comparación numérica en estos valores?
Gracias.
gracias ... ¿y qué hay de los números decimales? – user74042
Gracias de nuevo ... Intenté la solución mencionada en el enlace del artículo anterior (http://sujitpal.blogspot.com/2008/02/spatial-search-with-lucene.html), pero al ejecutar la consulta Lucene.net arroja una excepción: Nombre del parámetro: latitud System.ArgumentException: el valor proporcionado está fuera de los límites. Nombre del parámetro: latitud Aquí está mi consulta: latitud: [131450428 a 132173263] longitud: [091694457 a 092664286] – user74042