So "availability" is the absence of any other document's indexed time duration overlapping with your availability query duration. So I think you should negate an overlaps query. The overlaps query looks like: Intersects(-Inf start end Inf). And remember the slight buffering needed as described on the wiki. You'd add a small fraction to the start time and subtract a small fraction from the end time, so that you don't accidentally match a document that is adjacent.
-availability_spatial:"Intersects( 0 30.5 114.5 3650 )" Does that work against your data? If it doesn't, can you conjecture why it doesn't work based on a sample point in a document that it matched, or a document that should have matched but didn't? ~ David On 6/4/13 3:31 PM, "Chris Atkinson" <chrisa...@gmail.com> wrote: >Here is an example I have tried. > >So let's assume that I want to checkIn on the 30th day, and leave on the >115th day. > >My query would be: > >-availability_spatial:"Intersects( 30 0 3650 115 )" > >However, that wouldn't match anything. Here is an example document below >so >you can see. (I've not negated the spatial field in the filter query so >you >can see the field coordinates) > >In case the formatting is bad: See here > >http://pastie.org/pastes/8006249/text > > > ><?xml version="1.0" encoding="UTF-8"?> <response> <lst >name="responseHeader" >> <int name="status">0</int> <int name="QTime">1</int> <lst >>name="params"> < >str name="fl">availability_spatial</str> <str name="indent">true</str> ><str >name="q">id:38197 </str> <str name="_">1370374172298</str> <str name="wt"> >xml</str> <str name="fq">availability_spatial:"Intersects( 30 0 3650 115 >)" ></str> </lst> </lst> <result name="response" numFound="1" start="0"> ><doc> < >arr name="availability_spatial"> <str>147.6 163.4</str> <str>164.6 178.4</ >str> <str>192.6 220.4</str> <str>241.6 264.4</str> </arr></doc> </result> ></ >response> > > >On Tue, Jun 4, 2013 at 8:14 PM, Chris Atkinson <chrisa...@gmail.com> >wrote: > >> Thanks David. >> Query times are really quick and my index is only 20Mb now which is >>about >> what I would expect. >> I'm having some problems figuring out what type of query I want to find >> *Available* properties with this new points system. >> >> >> I'm storing bookings against each document. So I have X Y coordinates, >> where X will be the check in of a previous booking, and Y will be the >> departure. >> >> So for example illustrative purposes, a weeks booking from 10th January >>to >> the 17th, would be X Y => 10 17 >> >> <field name="booking">10 17</field> >> <field name="booking">22 27</field> >> >> I might have several bookings. >> >> Now, I want to find available properties with my search, but I'm just >>not >> sure on the ordering of the end/start in the polygon Intersect. >> >> I've looked at this document very carefully and tried to draw it all out >> on paper. >> >> >>https://people.apache.org/~hossman/spatial-for-non-spatial-meetup-2013011 >>7/ >> >> Here are the suggestions: >> >> q=fieldX:"Intersects(-ƒ end start ƒ)" >> q=fieldX:"Intersects(-ƒ start end ƒ)" >> q=fieldX:"Intersects(start -ƒ ƒ end)" >> >> All of these, are great for finding the existance of a field coordinate, >> but I need to make sure that the property is available. So I thought I >> could use one of these three queries in the negative by using >> -fieldX:"Inter...." but none of those work. >> >> Can you shine some light on what I might be missing? >> What ordering would I want for *availability* >> Thanks very much. >> >> >> >> On Mon, Jun 3, 2013 at 11:45 PM, Smiley, David W. >><dsmi...@mitre.org>wrote: >> >>> Hi Chris: >>> >>> Have you read: http://wiki.apache.org/solr/SpatialForTimeDurations >>> You're modeling your data sub-optimally. Full precision rectangles >>> (distErrPct=0) doesn't scale well and you're seeing that. You should >>> represent your durations as a point and it will take up a fraction of >>>the >>> space (see above). Furthermore, because your detail gets into one >>>digit >>> to the right of the decimal, your maxDistErr should definitely be >>>smaller >>> than 1 -- use something like 0.5 (given you have two levels of >>>precision >>> below a full day) but to be safer (more certain it's not a problem) use >>> 0.3 -- a little less. Please report back how that goes. >>> >>> ~ David >>> >>> On 6/3/13 7:27 AM, "Chris Atkinson" <chrisa...@gmail.com> wrote: >>> >>> >Hi, >>> >I'm seeing really slow query times. 7-25 seconds when I run a simple >>> >filter >>> >query that uses my SpatialRecursivePrefixTreeFieldType field. >>> > >>> >My index is about 30k documents. Prior to adding the Spatial field, >>>the >>> on >>> >disk space was about 100Mb, so it's a really tiny index. Once I add >>>the >>> >spatial field (which is multi-values), the index size jumps up to 2GB. >>> (Is >>> >this normal?). >>> > >>> >Only about 10k documents will have any spatial data. Typically, they >>>will >>> >have at most 10 shapes each, but the majority are all one of two >>> >rectangles. >>> > >>> >This is my fieldType definition. >>> > >>> > <fieldType name="date_availability" >>> >class="solr.SpatialRecursivePrefixTreeFieldType" >>> > geo="false" >>> > worldBounds="0 0 3650 1" >>> > distErrPct="0" >>> > maxDistErr="1" >>> > units="degrees" >>> > /> >>> > >>> >And the field >>> > >>> > <field name="availability_spatial" type="date_availability" >>> > indexed="true" stored="false" multiValued="true" /> >>> > >>> > >>> >I am using the field to represent approximately 10 years after January >>> 1st >>> >2013, where each day is along the X-axis. Because the availability >>>starts >>> >and ends at 2pm and 10am, I was using a decimal place when creating my >>> >shape to show that detail. (Is this approach wrong?) >>> > >>> >So a typical rectangle when indexed would be (minX minY maxX maxY) >>> > >>> >Rectangle 100.6 0 120.4 1 >>> > >>> >Is it wrong that my Y and X values are not of the same scale? Since I >>> >don't >>> >care about the Y axis at all, I just set it to be of 1 height always. >>> > >>> >I'm running Solr 4.3, with a small JVM of 768M (can be increased). >>>And I >>> >have 2GB RAM. (Again can be increased). >>> > >>> >Thanks >>> >>> >>