Thanks for the discussion, I've added this to my bag of tricks, way cool!

Erick


On Sat, Dec 8, 2012 at 10:52 PM, britske <gbr...@gmail.com> wrote:

> Brilliant! Got some great ideas for this. Indeed all sorts of usecases
> which use multiple temporal ranges could benefit..
>
> Eg: Another Guy on stackoverflow asked me about this some days ago.. He
> wants to model multiple temporary offers per product (free shopping for
> christmas, 20% discount for Black friday , etc) .. All possible with this
> out of the box. Factor in 'offer category' in  x and y as well for some
> extra powerfull querying.
>
> Yup im enthousiastic about it , which im sure you can tell :)
>
> Thanks a lot David,
>
> Cheers,
> Geert-Jan
>
>
>
> Sent from my iPhone
>
> On 9 dec. 2012, at 05:35, "David Smiley (@MITRE.org) [via Lucene]" <
> ml-node+s472066n4025434...@n3.nabble.com> wrote:
>
> > britske wrote
> > That's seriously awesome!
> >
> > Some change in the query though:
> > You described: "To query for a business that is open during at least some
> > part of a given time duration"
> > I want "To query for a business that is open during at least the entire
> > given time duration".
> >
> > Feels like a small difference but probably isn't (I'm still wrapping my
> > head on the intersect query I must admit)
> > So this would be a slightly different rectangle query.  Interestingly,
> you simply swap the location in the rectangle where you put the start and
> end time.  In summary:
> >
> > Indexed span CONTAINS query span:
> > minX minY maxX maxY -> 0 end start *
> >
> > Indexed span INTERSECTS (i.e. OVERLAPS) query span:
> > minX minY maxX maxY -> 0 start end *
> >
> > Indexed span WITHIN query span:
> > minX minY maxX maxY -> start 0 * end
> >
> > I'm using '*' here to denote the max possible value.  At some point I
> may add that as a feature.
> >
> > That was a fun exercise!  I give you credit in prodding me in this
> direction as I'm not sure if this use of spatial would have occurred to me
> otherwise.
> >
> > britske wrote
> > Moreover, any indication on performance? Should, say, 50.000 docs with
> > about 100-200 points each (1 a 2 open-close spans per day) be ok? ( I
> know
> > 'your mileage may very' etc. but just a guestimate :)
> > You should have absolutely no problem.  The real clincher in your favor
> is the fact that you only need 9600 discrete time values (so you said), not
> Long.MAX_VALUE.  Using Long.MAX_VALUE would simply not be possible with the
> current implementation because it's using Doubles which has 52 bits of
> precision not the 64 that would be required to be a complete substitute for
> any time/date.  Even given the 52 bits, a quad SpatialPrefixTree with
> maxLevels="52" would probably not perform well or might fail; not sure.
>  Eventually when I have time to work on an implementation that can be based
> on a configurable number of grid cells (not unlike how you can configure
> precisionStep on the Trie numeric fields), 52 should be no problem.
> >
> > I'll have to remember to refer back to this email on the approach if I
> create a field type that wraps this functionality.
> >
> > ~ David
> >
> > britske wrote
> > Again, this looks good!
> > Geert-Jan
> >
> > 2012/12/8 David Smiley (@MITRE.org) [via Lucene] <
> > [hidden email]>
> >
> > > Hello again Geert-Jan!
> > >
> > > What you're trying to do is indeed possible with Solr 4 out of the box.
> > >  Other terminology people use for this is multi-value time duration.
>  This
> > > creative solution is a pure application of spatial without the
> geospatial
> > > notion -- we're not using an earth or other sphere model -- it's a flat
> > > plane.  So no need to make reference to longitude & latitude, it's x &
> y.
> > >
> > > I would put opening time into x, and closing time into y.  To express a
> > > point, use "x y" (x space y), and supply this as a string to your
> > > SpatialRecursivePrefixTreeFieldType based field for indexing.  You can
> give
> > > it multiple values and it will work correctly; this is one of RPT's
> main
> > > features that set it apart from Solr 3 spatial.  To query for a
> business
> > > that is open during at least some part of a given time duration, say
> 6-8
> > > o'clock, the query would look like openDuration:"Intersects(minX minY
> maxX
> > > maxY)"  and put 0 or minX (always), 6 for minY (start time), 8 for maxX
> > > (end time), and the largest possible value for maxY.  You wouldn't
> actually
> > > use 6 & 8, you'd use the number of 15 minute intervals since your
> epoch for
> > > this equivalent time span.
> > >
> > > You'll need to configure the field correctly: geo="false"
> worldBounds="0 0
> > > maxTime maxTime" substituting an appropriate value for maxTime based on
> > > your unit of time (number of 15 minute intervals you need) and
> > > distErrPct="0" (full precision).
> > >
> > > Let me know how this works for you.
> > >
> > > ~ David
> > >  Author:
> > > http://www.packtpub.com/apache-solr-3-enterprise-search-server/book
> >  Author:
> http://www.packtpub.com/apache-solr-3-enterprise-search-server/book
> >
> >
> > If you reply to this email, your message will be added to the discussion
> below:
> >
> http://lucene.472066.n3.nabble.com/Modeling-openinghours-using-multipoints-tp4025336p4025434.html
> > To unsubscribe from Modeling openinghours using multipoints, click here.
> > NAML
>
>
>
>
> --
> View this message in context:
> http://lucene.472066.n3.nabble.com/Modeling-openinghours-using-multipoints-tp4025336p4025454.html
> Sent from the Solr - User mailing list archive at Nabble.com.
>

Reply via email to