Ah; I saw that.  I'm glad you figured it out.  Yes, you needed the SQL
alias.  I'm kinda surprised you didn't get an error about a field by the
name of your expression not existing... but maybe you have a catch-all
dynamic field or maybe you're in data-driven mode.  In either case, I'd
expect a quick select of your data would show those fields.  And your first
query wasn't a spatial query; there is no spatial=true parameter.  You got
it right the second time.

On Tue, Feb 16, 2016 at 4:03 AM Colin Freas <cfr...@stsci.edu> wrote:

>
> Looks like the only issue was that I did not have an alias for SourceRpt
> field in the SQL.
>
> With that in place, everything seems to work more or less as expected.
> SourceRpt shows up where it should.
>
> Queries like
>
> http://localhost:8983/solr/spatial/select?q=*:*&fq={!geofilt%20sfield=Sour
> <http://localhost:8983/solr/spatial/select?q=*:*&fq=%7B!geofilt%20sfield=Sour>
> ceRpt}&pt=0,0&d=5
>
>
>
> ... return appropriate subsets.
>
> Doh,
> Colin
>
> On 2/16/16, 3:31 AM, "Colin Freas" <cfr...@stsci.edu> wrote:
>
> >
> >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&spa
> >t
> >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
> >
>
> --
Lucene/Solr Search Committer, Consultant, Developer, Author, Speaker
LinkedIn: http://linkedin.com/in/davidwsmiley | Book:
http://www.solrenterprisesearchserver.com

Reply via email to