David, thanks for getting back to me.  SpatialRecursivePrefixTreeFieldType
seems to be what I need, and the default search seems appropriate.  This
is for entries in an astronomical catalog, so great circle distances on a
perfect sphere is what I¹m after.

I am having a bit of difficulty though.

Having gotten records importing via our database into a schema on both a
stand-along Solr instance and in a SolrCloud cluster, I¹ve moved on to
³spatializing² the appropriate fields, and everything looks like it¹s
working, in that there are no errors thrown.  But when I try what I think
is valid spatial query, it doesn¹t work.

Here¹s what I¹m doing.  Pertinent bits from my schema:

        ...
                <field name="SourceRpt" type="rpt" indexed="true" stored="false"
required="false" multiValued="false" />
                <uniqueKey>CatID</uniqueKey>
        </fields>
        <types>
                <fieldType name="rpt" 
class="solr.SpatialRecursivePrefixTreeFieldType"
                        geo="true"
                        distanceUnits="degrees" />
        ...
        </types>

In my db-config.xml, I¹ve got this sql:
        <entity name="observation" query="SELECT CatID, MatchRA, MatchDec,
SourceRA, SourceDec,  '''' + ltrim(rtrim(Str(SourceRA,25,16))) + ',' +
ltrim(rtrim(Str(SourceDec,25,16))) + '''' FROM dbo.Catalog" />


When I run a data import through Solr¹s admin gui and look at the verbose
debug output, something seems off.  Top of the output is this:
        {
        "responseHeader": {
        "status": 0,
        "QTime": 75
        },
        "initArgs": [
        "defaults",
        [
        "config",
        "hsc-db-config.xml"
        ]
        ],
        "command": "full-import",
        "mode": "debug",
        "documents": [
        {
        "MatchDec": [
        -0.673125699999921
        ],
        "SourceDec": [
        -0.673125699999921
        ],
        "MatchRA": [
        0.5681586795334927
        ],
        "SourceRA": [
        0.5681586795334927
        ],
        "CatID": [
        25558943
        ]
        },


There¹s no SourceRpt field there.  But in verbose output of what¹s
returned from the query, the SourceRpt field seems to be correctly put
together:

        "verbose-output": [
        "entity:observation",
        [
        "document#1",
        [
        "query",
        "SELECT CatID, MatchRA, MatchDec, SourceRA, SourceDec,  '''' +
ltrim(rtrim(Str(SourceRA,25,16))) + ',' +
ltrim(rtrim(Str(SourceDec,25,16))) + '''' FROM xcat.BestCatalog",
        "time-taken",
        "0:0:0.22",
        null,
        "----------- row #1-------------",
        "",
        "'0.5681586795334928,-0.6731256999999210'",
        "MatchDec",
        -0.673125699999921,
        "SourceDec",
        -0.673125699999921,
        "MatchRA",
        0.5681586795334927,
        "SourceRA",
        0.5681586795334927,
        "CatID",
        25558943,
        null,
        "---------------------------------------------"
        ]



I try a spatial search like this:
        
http://localhost:8983/solr/spatial/select?q=*%3A*&wt=json&indent=true&spat
ial=true&pt=3%2C3&sfield=SourceRpt&d=0.0001


... And I get back all (10) records in the core, when I would expect 0,
given the very small distance I supply to a point well away from any of
the records.

I¹m not sure what¹s going on.  I don¹t know if this is a simple Solr
config error I¹m missing, or if there¹s some spatial magic I¹m unaware of.
 

Any thoughts appreciated.

-Colin


On 1/20/16, 9:34 PM, "david.w.smi...@gmail.com" <david.w.smi...@gmail.com>
wrote:

>Hello Colin,
>
>If the spatial field you use is the SpatialRecursivePrefixTreeFieldType
>one
>(RPT for short) with geo="true" then the circle shape (i.e. point-radius
>filter) implied by the geofilt Solr QParser is on a sphere.  That is, it
>uses the "great circle" distance computed using the Haversine formula by
>default, though it can be configured to use the Law of Cosines formula or
>Vincenty (spherical version) formula if you so choose.  Using geodist()
>for
>spatial distance sorting/boosting also uses this.  If you use LatLonType
>then geofilt & geodist() use Haversine too.
>
>If you use polygons or line strings, then it's *not* using a spherical
>model; it's using a Euclidean (flat) model on plate carrée.  I am
>currently
>working on adapting the Spatial4j library to work with Lucene's Geo3D (aka
>spatial 3d) which has both a spherical model and an ellipsoidal model,
>which can be configured with the characteristics specified by WGS84.  If
>you are super-eager to get this yourself without waiting, then you could
>write a Solr QParser that constructs a Geo3dShape wrapping a Geo3D
>GeoShape
>object constructed from query parameters.  You might alternatively try and
>use Geo3DPointField on Lucene 6 trunk.
>
>~ David
>
>On Tue, Jan 19, 2016 at 11:07 AM Colin Freas <cfr...@stsci.edu> wrote:
>
>>
>> Greetings!
>>
>> I have recently stood up an instance of Solr, indexing a catalog of
>>about
>> 100M records representing points on the celestial sphere.  All of the
>> fields are strings, floats, and non-spatial types.  I¹d like to convert
>>the
>> positional data to an appropriate spatial point data type supported by
>>Solr.
>>
>> I have a couple of questions about indexing spatial data using Solr,
>>since
>> it seems spatial4j, and the spatial functionality in Solr generally, is
>> more GIS geared.  I worry that the measurements of lat/long on the
>> imperfect sphere of the Earth wouldn¹t match up with the astronomical
>>right
>> ascension/declination concept of the perfectly spherical celestial
>>sphere
>> used to record the coordinates of our records.
>>
>> I¹m also worried there might be other assumptions built into spatial4j &
>> Solr based on using a real surface vs a virtual one.
>>
>> Does anyone have experience doing this, or is there perhaps some
>> documentation specific to this use case that anyone might be able to
>>point
>> me to?
>>
>> Thanks in advance,
>> Colin
>>
>-- 
>Lucene/Solr Search Committer, Consultant, Developer, Author, Speaker
>LinkedIn: http://linkedin.com/in/davidwsmiley | Book:
>http://www.solrenterprisesearchserver.com

Reply via email to