[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
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
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
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
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
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
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