[
https://issues.apache.org/jira/browse/SOLR-2155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13011661#comment-13011661
]
Ryan McKinley commented on SOLR-2155:
-------------------------------------
Congratulations on the new baby!
Thinking about spatial support in general, I think we should settle on some
basic APIs and approaches that can be used across many indexing strategies. In
http://code.google.com/p/lucene-spatial-playground/ I'm messing with how we can
use a standard API to index Shapes with various strategies. As always, each
stratagey has its tradeoffs, but if we can keep the high level APIs similar,
that makes choosing the right approach easier. In this project I'm looking at
indexing shaps as:
* bounding box -- 4 fields xmin/xmax/ymin./ymax
* prefix grids -- like geohash or
[csquars|http://www.marine.csiro.au/csquares/about-csquares.htm]
* in memory spatial index (rtree/quadtree)
* raw WKB geometry tokens
* points -- x,y fields
* etc
To keep things coherent, I'm proposing a high level interface like:
https://lucene-spatial-playground.googlecode.com/svn/trunk/spatial-lucene/src/main/java/org/apache/lucene/spatial/search/SpatialQueryBuilder.java
And then each implementation fills it in:
https://lucene-spatial-playground.googlecode.com/svn/trunk/spatial-lucene/src/main/java/org/apache/lucene/spatial/search/prefix/PrefixGridQueryBuilder.java
This solr to just handle setup and configuration:
http://lucene-spatial-playground.googlecode.com/svn/trunk/spatial-solr/src/main/java/org/apache/solr/spatial/prefix/SpatialPrefixGridFieldType.java
In my view geohash is a subset of 'spatial prefix grid' (is there a real name
for this?) -- the interface i'm proposing is:
http://lucene-spatial-playground.googlecode.com/svn/trunk/spatial-base/src/main/java/org/apache/lucene/spatial/base/prefix/SpatialPrefixGrid.java
essentially:
{code}
public List<CharSequence> readCells( Shape geo );
{code}
Geohash for a point would just be a list of one token -- for a polygon, it
would be a collection of tokens that fill the space like csquares
I aim to get this basic structure in a lucene branch and maybe into trunk in
the next few weeks....
> Geospatial search using geohash prefixes
> ----------------------------------------
>
> Key: SOLR-2155
> URL: https://issues.apache.org/jira/browse/SOLR-2155
> Project: Solr
> Issue Type: Improvement
> Reporter: David Smiley
> Assignee: Grant Ingersoll
> Attachments: GeoHashPrefixFilter.patch, GeoHashPrefixFilter.patch,
> GeoHashPrefixFilter.patch, SOLR.2155.p3.patch, SOLR.2155.p3tests.patch
>
>
> There currently isn't a solution in Solr for doing geospatial filtering on
> documents that have a variable number of points. This scenario occurs when
> there is location extraction (i.e. via a "gazateer") occurring on free text.
> None, one, or many geospatial locations might be extracted from any given
> document and users want to limit their search results to those occurring in a
> user-specified area.
> I've implemented this by furthering the GeoHash based work in Lucene/Solr
> with a geohash prefix based filter. A geohash refers to a lat-lon box on the
> earth. Each successive character added further subdivides the box into a 4x8
> (or 8x4 depending on the even/odd length of the geohash) grid. The first
> step in this scheme is figuring out which geohash grid squares cover the
> user's search query. I've added various extra methods to GeoHashUtils (and
> added tests) to assist in this purpose. The next step is an actual Lucene
> Filter, GeoHashPrefixFilter, that uses these geohash prefixes in
> TermsEnum.seek() to skip to relevant grid squares in the index. Once a
> matching geohash grid is found, the points therein are compared against the
> user's query to see if it matches. I created an abstraction GeoShape
> extended by subclasses named PointDistance... and CartesianBox.... to support
> different queried shapes so that the filter need not care about these details.
> This work was presented at LuceneRevolution in Boston on October 8th.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]