Try this: DistanceQueryBuilder dq = new DistanceQueryBuilder(39.9260, -75.1566, 1d, LAT_FIELD, LON_FIELD,TIER_PREFIX_FIELD, true);
instead of DistanceQueryBuilder dq = new DistanceQueryBuilder(39.9260, -75.1566, 1d, LAT_FIELD, LON_FIELD, true); you are usesing the wrong ctor, the one with 2 strings is String geoHashFieldPrefix, String tierFieldPrefix, you are looking for String lat_field, String lon_field, String tierFieldPrefix simon On Fri, Feb 5, 2010 at 6:48 PM, Liang, Jay (YBUSA-KOP) <jay.li...@yellowbook.com> wrote: > Hi, all > > > > I was trying to add some distance search capabilities to an index using > spatial lucene in lucene 3.0 but could not get it working. So I wrote a very > small test example to try out the api. However, even the simplest test case > would NOT function correctly either. > > > > Anyone has ideas/experiences about spatial lucene in 3.0? > > > > My codes > > > > //tested using core-3.0, misc-3.0, spatial-3.0, the following code snippet > does not return any results but it should > > > > import java.io.IOException; > > > > import org.apache.lucene.analysis.WhitespaceAnalyzer; > > import org.apache.lucene.document.Document; > > import org.apache.lucene.document.Field; > > import org.apache.lucene.document.Field.Index; > > import org.apache.lucene.document.Field.Store; > > import org.apache.lucene.index.IndexWriter; > > import org.apache.lucene.index.Term; > > import org.apache.lucene.index.IndexWriter.MaxFieldLength; > > import org.apache.lucene.search.IndexSearcher; > > import org.apache.lucene.search.Query; > > import org.apache.lucene.search.TermQuery; > > import org.apache.lucene.search.TopDocs; > > import org.apache.lucene.spatial.tier.DistanceQueryBuilder; > > import org.apache.lucene.spatial.tier.projections.CartesianTierPlotter; > > import org.apache.lucene.spatial.tier.projections.IProjector; > > import org.apache.lucene.spatial.tier.projections.SinusoidalProjector; > > import org.apache.lucene.store.Directory; > > import org.apache.lucene.store.RAMDirectory; > > import org.apache.lucene.util.NumericUtils; > > > > public class SpatialLuceneExample{ > > private static final String LAT_FIELD = "lat", LON_FIELD = "lon", > TIER_PREFIX_FIELD = "_localTier"; > > > > private double maxMiles = 25, minMiles = 1; // anything lower than 1 > mile will just give tier 15 > > // see > http://www.nsshutdown.com/projects/lucene/whitepaper/locallucene_v2.html > > private IProjector projector = new SinusoidalProjector(); > > private CartesianTierPlotter ctp = new CartesianTierPlotter(0, > projector, TIER_PREFIX_FIELD); > > //startTier is 14 for 25 miles, 15 for 1 miles in lucene 3.0 > > private int startTier = 5, endTier = 15; > > > > /** > > * Add the lat, lon, and tier box id to the document > > * see > http://www.nsshutdown.com/projects/lucene/whitepaper/locallucene_v2.html > > * @param lat > > * @param lon > > * @param document a geo document > > */ > > private void addSpatialLcnFields(double lat, double lon, Document > document){ > > document.add(new Field(LAT_FIELD, > NumericUtils.doubleToPrefixCoded(lat), Field.Store.YES, > Field.Index.NOT_ANALYZED)); > > document.add(new Field(LON_FIELD, > NumericUtils.doubleToPrefixCoded(lon), Field.Store.YES, > Field.Index.NOT_ANALYZED)); > > > > for(int tier = startTier ; tier<= endTier; tier++){ > > CartesianTierPlotter ctp = new CartesianTierPlotter(tier, > projector, TIER_PREFIX_FIELD); > > double boxId = ctp.getTierBoxId(lat, lon); > > document.add(new Field(ctp.getTierFieldName(), > NumericUtils.doubleToPrefixCoded(boxId), Field.Store.YES, > Field.Index.NOT_ANALYZED_NO_NORMS)); > > } > > } > > > > > > private void addLocation(IndexWriter writer, String name, double lat, > double lon) throws IOException{ > > Document doc = new Document(); > > doc.add(new Field("name", name, Field.Store.YES, Index.ANALYZED)); > > doc.add(new Field("metafile", "doc", Store.YES, Index.ANALYZED)); > > addSpatialLcnFields(lat, lon, doc); > > writer.addDocument(doc); > > } > > > > public static void main(String[] args) throws Exception{ > > SpatialLuceneExample sle = new SpatialLuceneExample(); > > Directory dir = new RAMDirectory(); > > IndexWriter writer = new IndexWriter(dir, new > WhitespaceAnalyzer(), MaxFieldLength.UNLIMITED); > > > > sle.addLocation(writer, "test", 39.9260, -75.1566); > > > > writer.commit(); > > writer.close(); > > > > IndexSearcher searcher = new IndexSearcher(dir); > > DistanceQueryBuilder dq = new DistanceQueryBuilder(39.9260, > -75.1566, 10d, LAT_FIELD, LON_FIELD, true); > > > > Query tq = new TermQuery(new Term("metafile", "doc")); > > TopDocs hits = searcher.search(tq, dq.getFilter(), 10); > > for(int i =0; i<hits.totalHits; i++){ > > Document doc = searcher.doc(hits.scoreDocs[i].doc); > > System.out.println(doc.get("name")); > > } > > } > > } --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org