mirror of https://github.com/apache/lucene.git
LUCENE-9552: make sure we don't construct Illegal rectangles due to quantization (#2131)
This commit is contained in:
parent
63943a739b
commit
bc854b2627
|
@ -104,12 +104,28 @@ public class LatLonDocValuesPointInGeometryQuery extends Query {
|
|||
|
||||
@Override
|
||||
public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException {
|
||||
final Component2D tree = LatLonGeometry.create(geometries);
|
||||
|
||||
if (tree.getMinY() > tree.getMaxY()) {
|
||||
// encodeLatitudeCeil may cause minY to be > maxY iff
|
||||
// the delta between the longitude < the encoding resolution
|
||||
return new ConstantScoreWeight(this, boost) {
|
||||
@Override
|
||||
public Scorer scorer(LeafReaderContext context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCacheable(LeafReaderContext ctx) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
final GeoEncodingUtils.Component2DPredicate component2DPredicate = GeoEncodingUtils.createComponentPredicate(tree);
|
||||
|
||||
return new ConstantScoreWeight(this, boost) {
|
||||
|
||||
final Component2D tree = LatLonGeometry.create(geometries);
|
||||
final GeoEncodingUtils.Component2DPredicate component2DPredicate = GeoEncodingUtils.createComponentPredicate(tree);
|
||||
|
||||
|
||||
@Override
|
||||
public Scorer scorer(LeafReaderContext context) throws IOException {
|
||||
final SortedNumericDocValues values = context.reader().getSortedNumericDocValues(field);
|
||||
|
|
|
@ -142,8 +142,22 @@ final class LatLonPointInGeometryQuery extends Query {
|
|||
|
||||
@Override
|
||||
public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException {
|
||||
|
||||
final Component2D tree = LatLonGeometry.create(geometries);
|
||||
if (tree.getMinY() > tree.getMaxY()) {
|
||||
// encodeLatitudeCeil may cause minY to be > maxY iff
|
||||
// the delta between the longitude < the encoding resolution
|
||||
return new ConstantScoreWeight(this, boost) {
|
||||
@Override
|
||||
public Scorer scorer(LeafReaderContext context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCacheable(LeafReaderContext ctx) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
final GeoEncodingUtils.Component2DPredicate component2DPredicate = GeoEncodingUtils.createComponentPredicate(tree);
|
||||
// bounding box over all geometries, this can speed up tree intersection/cheaply improve approximation for complex multi-geometries
|
||||
final byte minLat[] = new byte[Integer.BYTES];
|
||||
|
|
Loading…
Reference in New Issue