[GitHub] [lucene-solr] nknize commented on a change in pull request #726: LUCENE-8632: New XYShape Field and Queries for indexing and searching general cartesian geometries

2019-07-01 Thread GitBox
nknize commented on a change in pull request #726: LUCENE-8632: New XYShape 
Field and Queries for indexing and searching general cartesian geometries
URL: https://github.com/apache/lucene-solr/pull/726#discussion_r299156599
 
 

 ##
 File path: lucene/sandbox/src/java/org/apache/lucene/geo/XYRectangle2D.java
 ##
 @@ -0,0 +1,252 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.geo;
+
+import java.util.Arrays;
+
+import org.apache.lucene.index.PointValues.Relation;
+import org.apache.lucene.util.NumericUtils;
+
+import static java.lang.Integer.BYTES;
+import static org.apache.lucene.geo.GeoUtils.orient;
+import static org.apache.lucene.geo.XYEncodingUtils.decode;
+
+/**
+ * 2D rectangle implementation containing cartesian spatial logic.
+ *
+ * @lucene.internal
+ */
+public class XYRectangle2D {
 
 Review comment:
   Updated `XYRectangle2D` to derive from `Rectangle2D` Worked out quite nicely 
and eliminated nearly all duplicate code.


This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[GitHub] [lucene-solr] nknize commented on a change in pull request #726: LUCENE-8632: New XYShape Field and Queries for indexing and searching general cartesian geometries

2019-07-01 Thread GitBox
nknize commented on a change in pull request #726: LUCENE-8632: New XYShape 
Field and Queries for indexing and searching general cartesian geometries
URL: https://github.com/apache/lucene-solr/pull/726#discussion_r299084653
 
 

 ##
 File path: lucene/sandbox/src/java/org/apache/lucene/geo/XYRectangle2D.java
 ##
 @@ -0,0 +1,252 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.geo;
+
+import java.util.Arrays;
+
+import org.apache.lucene.index.PointValues.Relation;
+import org.apache.lucene.util.NumericUtils;
+
+import static java.lang.Integer.BYTES;
+import static org.apache.lucene.geo.GeoUtils.orient;
+import static org.apache.lucene.geo.XYEncodingUtils.decode;
+
+/**
+ * 2D rectangle implementation containing cartesian spatial logic.
+ *
+ * @lucene.internal
+ */
+public class XYRectangle2D {
 
 Review comment:
   I think that's a good idea. This class is pretty much just for API purposed 
so I'll tease out the common logic and just have `Rectangle2D` derive what's 
common and implement the dateline crossing logic separately. Each constructor 
can handle their own encoding.


This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[GitHub] [lucene-solr] nknize commented on a change in pull request #726: LUCENE-8632: New XYShape Field and Queries for indexing and searching general cartesian geometries

2019-07-01 Thread GitBox
nknize commented on a change in pull request #726: LUCENE-8632: New XYShape 
Field and Queries for indexing and searching general cartesian geometries
URL: https://github.com/apache/lucene-solr/pull/726#discussion_r299080261
 
 

 ##
 File path: lucene/sandbox/src/java/org/apache/lucene/geo/XYPolygon2D.java
 ##
 @@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.geo;
+
+/**
+ * 2D cartesian polygon implementation represented as a balanced interval tree 
of edges.
+ *
+ * @lucene.internal
+ */
+public class XYPolygon2D extends Polygon2D {
+
+  protected XYPolygon2D(XYPolygon polygon, XYPolygon2D holes) {
 
 Review comment:
   Yes, we can absolutely add this to `Polygon2D` but I think we'd only want to 
do that if we decide `XYShape` will live in `core`?  If we decide to put both 
`LatLonShape` and `XYShape` in the `spatial` module we'd have to subclass like 
this so core does not depend on classes in external modules.


This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[GitHub] [lucene-solr] nknize commented on a change in pull request #726: LUCENE-8632: New XYShape Field and Queries for indexing and searching general cartesian geometries

2019-06-26 Thread GitBox
nknize commented on a change in pull request #726: LUCENE-8632: New XYShape 
Field and Queries for indexing and searching general cartesian geometries
URL: https://github.com/apache/lucene-solr/pull/726#discussion_r297775659
 
 

 ##
 File path: lucene/sandbox/src/java/org/apache/lucene/document/LatLonShape.java
 ##
 @@ -54,14 +50,7 @@
  *
  * @lucene.experimental
  */
-public class LatLonShape {
-  static final int BYTES = Integer.BYTES;
-
-  protected static final FieldType TYPE = new FieldType();
-  static {
-TYPE.setDimensions(7, 4, BYTES);
-TYPE.freeze();
-  }
+public class LatLonShape extends ShapeField {
 
 Review comment:
   Not at all. Fixed.


This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[GitHub] [lucene-solr] nknize commented on a change in pull request #726: LUCENE-8632: New XYShape Field and Queries for indexing and searching general cartesian geometries

2019-06-26 Thread GitBox
nknize commented on a change in pull request #726: LUCENE-8632: New XYShape 
Field and Queries for indexing and searching general cartesian geometries
URL: https://github.com/apache/lucene-solr/pull/726#discussion_r297775614
 
 

 ##
 File path: lucene/sandbox/src/java/org/apache/lucene/document/XYShape.java
 ##
 @@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.document;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.lucene.geo.Tessellator;
+import org.apache.lucene.index.PointValues; // javadoc
+import org.apache.lucene.geo.XYLine;
+import org.apache.lucene.geo.XYPolygon;
+import org.apache.lucene.search.Query;
+
+import static org.apache.lucene.geo.XYEncodingUtils.encode;
+
+/**
+ * A cartesian shape utility class for indexing and searching geometries whose 
vertices are unitless x, y values.
+ * 
+ * This class defines six static factory methods for common indexing and 
search operations:
+ * 
+ *   {@link #createIndexableFields(String, XYPolygon)} for indexing a 
cartesian polygon.
+ *   {@link #createIndexableFields(String, XYLine)} for indexing a 
cartesian linestring.
+ *   {@link #createIndexableFields(String, double, double)} for indexing a 
x, y cartesian point.
+ *   {@link #newBoxQuery newBoxQuery()} for matching cartesian shapes that 
have some {@link QueryRelation} with a bounding box.
+ *   {@link #newBoxQuery newLineQuery()} for matching cartesian shapes 
that have some {@link QueryRelation} with a linestring.
+ *   {@link #newBoxQuery newPolygonQuery()} for matching cartesian shapes 
that have some {@link QueryRelation} with a polygon.
+ * 
+
+ * WARNING: Like {@link LatLonPoint}, vertex values are indexed with 
some loss of precision from the
+ * original {@code double} values.
+ * @see PointValues
+ * @see LatLonDocValuesField
+ *
+ * @lucene.experimental
+ */
+public class XYShape extends ShapeField {
 
 Review comment:
   We sure don't. Fixed.


This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org



[GitHub] [lucene-solr] nknize commented on a change in pull request #726: LUCENE-8632: New XYShape Field and Queries for indexing and searching general cartesian geometries

2019-06-26 Thread GitBox
nknize commented on a change in pull request #726: LUCENE-8632: New XYShape 
Field and Queries for indexing and searching general cartesian geometries
URL: https://github.com/apache/lucene-solr/pull/726#discussion_r297775564
 
 

 ##
 File path: lucene/sandbox/src/test/org/apache/lucene/document/TestXYShape.java
 ##
 @@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.document;
+
+import org.apache.lucene.document.ShapeField.QueryRelation;
+import org.apache.lucene.geo.XYLine;
+import org.apache.lucene.geo.XYPolygon;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.RandomIndexWriter;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.IOUtils;
+import org.apache.lucene.util.LuceneTestCase;
+
+/** Test case for indexing cartesian shapes and search by bounding box, lines, 
and polygons */
+public class TestXYShape extends LuceneTestCase {
+
+  protected static String FIELDNAME = "field";
+  protected void addPolygonsToDoc(String field, Document doc, XYPolygon 
polygon) {
+Field[] fields = XYShape.createIndexableFields(field, polygon);
+for (Field f : fields) {
+  doc.add(f);
+}
+  }
+
+  protected Query newRectQuery(String field, double minX, double maxX, double 
minY, double maxY) {
+return XYShape.newBoxQuery(field, QueryRelation.INTERSECTS, minX, maxX, 
minY, maxY);
+  }
+
+  /** test we can search for a point with a standard number of vertices*/
+  public void testBasicIntersects() throws Exception {
+//int numVertices = TestUtil.nextInt(random(), 50, 100);
+Directory dir = newDirectory();
+RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
+
+// add a random polygon document
+//Polygon p = GeoTestUtil.createRegularPolygon(0, 90, atLeast(100), 
numVertices);
+//XYPolygon xyp = new XYPolygon(p.getPolyLons(), p.getPolyLats(), 
XYShape.XYShapeType.INTEGER);
 
 Review comment:
   Kind of... I went back and made this test slightly more randomized...


This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org