Ich arbeite an einer "US-basierten Suche in der Stadt in einem bestimmten Umkreis" mit Lucene API. Am Indizierungs Stadt lat und lange Werte in Lucene wie folgt:Korrekte Indizierung von Breiten- und Längenwerten in 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));
Da Lucene nur Strings und nicht die Zahlen versteht, sind Klotzen lat und lange Werte.
Wenn beispielsweise Original lat und lange 41,811846 und -87,820628 jeweils nach Polsterung, Werte wie folgt aussehen:
paddedLatitude -> "0.041,811846" und paddedLongitude -> "- 087,820628"
Mache die gleiche Auffüllung, während ich die nächste Stadtabfrage (mit der ConstantScoreRangeQuery-Klasse von Lucene) erstelle.
Angesichts der Tatsache, dass Lat und Long-Werte Dezimal/negative Zahlen sein können, ist dies der richtige Ansatz, sie zu indizieren, so dass ich die nächstgelegenen Städte in den Suchergebnissen erhalten würde, wenn Lucene eine Nummer Range/Vergleich durchführen würde diese Werte?
Danke.
danke ... und was ist mit Dezimalzahlen? – user74042
Nochmals vielen Dank .... Ich habe versucht, Lösung erwähnt in oben Artikel Link (http://sujitpal.blogspot.com/2008/02/spatial-search-with-lucene.html), aber bei der Ausführung der Abfrage Lucene.net wirft Eine Ausnahme: Parametername: latitude System.ArgumentException: Der angegebene Wert liegt außerhalb des zulässigen Bereichs. Parametername: latitude Hier ist meine Frage: geographische Breite: [131450428 TO 132173263] Länge: [091694457 TO 092664286] – user74042