Sorry - didn't finish my thought. I need to address querying :) So using
the above to define what's in the index your queries for a day/time become
a CONTAINS operation against the field. Let's say that the field is defined
as a location_rpt using JTS and its Spatial Factory (which supports
polygons) - oh, and it would need to be multi-valued. Querying the field
would require first translating "now" or "in an hour" or "Monday at 9am" to
a geocode, then hitting the index with a CONTAINS request per the docs:

https://cwiki.apache.org/confluence/display/solr/Spatial+Search


On Wed, Aug 26, 2015 at 11:23 AM, Darren Spehr <darre...@gmail.com> wrote:

> Sure - and sorry for its density. I reread it and thought the same ;)
>
> So imagine a polygon of say 1/2 mile width (I made that up) that stretches
> around the equator. Let's call this a week's timeline and subdivide it into
> 7 blocks, one for each day. For the sake of simplicity assume it's a line
> (which I forget but is supported in Solr as an infinitely small polygon)
> starting at (0,-180) for Monday at 12:00 AM and ending back at (0,180) for
> Sunday at 11:59 PM. By subdivide you can think of it either radially or by
> longitude, but you have 360 degrees to divide into 7, which means that
> every hour is represented by a range of roughly 2.143 degrees (360/7/24).
> These regions represent each day and hour (or less), and the region
> boundaries represent midnight for the day before.
>
> Now for indexing - your open hours then become a combination of these
> subdivisions. If you're open 24x7 then the whole polygon is indexed. If
> you're only open on Monday from 9-5 then only the polygon between
> (0,-160.7) and (0,-143.57) is indexed. With careful attention to detail you
> can index any combination of times this way.
>
> So now the varsity question is how to do this with a fluctuating calendar?
> I think this example can be extended to include searching against any given
> day of the week in a year, or years. Just imagine a translation layer that
> adjusts the latitude N or S by some amount to represent which day in which
> year you're looking for. Make sense?
>
> On Wed, Aug 26, 2015 at 10:50 AM, Upayavira <u...@odoko.co.uk> wrote:
>
>> "delightfully dense" = really intriguing, but I couldn't quite
>> understand it - really hoping for more info
>>
>> On Wed, Aug 26, 2015, at 03:49 PM, Upayavira wrote:
>> > Darren,
>> >
>> > That was delightfully dense. Do you think you could unpack it a bit
>> > more? Possibly some sample (pseudo) queries?
>> >
>> > Upayavira
>> >
>> > On Wed, Aug 26, 2015, at 03:02 PM, Darren Spehr wrote:
>> > > If you wanted to try a spatial approach that blended times like above,
>> > > you
>> > > could try a polygon of minimum width that spans the globe - this is
>> > > literally using spatial search (geocodes) against time. So in this
>> > > scenario
>> > > you logically subdivide the polygon into 7 distinct regions (for days)
>> > > and
>> > > then within this you can defined, like a timeline, what open and
>> closed
>> > > means. The problem of 3AM is taken care of because of it's continuous
>> > > nature - ie one day is adjacent to the next, with Sunday and Monday
>> > > backing
>> > > up to each other. Just a thought.
>> > >
>> > > On Wed, Aug 26, 2015 at 5:38 AM, Upayavira <u...@odoko.co.uk> wrote:
>> > >
>> > > >
>> > > >
>> > > > On Wed, Aug 26, 2015, at 10:17 AM, O. Klein wrote:
>> > > > > Those options don't fix my problem with closing times the next
>> morning,
>> > > > > or is
>> > > > > there a way to do this?
>> > > >
>> > > > Use the spatial model, and a time window of a week. There are 10,080
>> > > > minutes in a week, so you could use that as your scale.
>> > > >
>> > > > Assuming the week starts at 00:00 Monday morning, you might index
>> Monday
>> > > > 9:00-23:00 as  540:1380
>> > > >
>> > > > Tuesday 9am-Wednesday 1am would be 1980:2940
>> > > >
>> > > > You convert your NOW time into a "minutes since Monday 00:00" and
>> do a
>> > > > spatial search within that time.
>> > > >
>> > > > If it is now Monday, 11:23am, that would be 11*60+23=683, so you
>> would
>> > > > do a search for 683:683.
>> > > >
>> > > > If you have a shop that is open over Sunday night to Monday, you
>> just
>> > > > list it as open until Sunday 23:59 and open again Monday 00:00.
>> > > >
>> > > > Would that do it?
>> > > >
>> > > > Upayavira
>> > > >
>> > >
>> > >
>> > >
>> > > --
>> > > Darren
>>
>
>
>
> --
> Darren
>



-- 
Darren

Reply via email to