code: @Override
      public Query query(Schema schema) {
  
          if (field == null || field.trim().isEmpty()) {
              throw new IllegalArgumentException("Field name required");
          }
          if (shape == null) {
              throw new IllegalArgumentException("Geo shape required");
          }
          if (operator == null) {
              throw new IllegalArgumentException("Geo operator required");
          }
  
          ColumnMapper columnMapper = schema.getMapper(field);
          if (columnMapper == null || !(columnMapper instanceof GeoShapeMapper)) {
              throw new IllegalArgumentException("Not mapper found");
          }
          GeoShapeMapper mapper = (GeoShapeMapper) columnMapper;
  
          SpatialContext spatialContext = mapper.getSpatialContext();
          SpatialStrategy spatialStrategy = mapper.getStrategy(field);
          SpatialArgs args = new SpatialArgs(operator.getSpatialOperation(), shape.toSpatial4j(spatialContext));
          Query query = spatialStrategy.makeQuery(args);
          query.setBoost(boost);
          return query;
      }
docs: {@inheritDoc}