protected RecursivePrefixTreeStrategy makeRPTStrategy(String spatialField, Config config, Map<String, String> configMap, SpatialContext ctx) { //A factory for the prefix tree grid SpatialPrefixTree grid = SpatialPrefixTreeFactory.makeSPT(configMap, null, ctx); RecursivePrefixTreeStrategy strategy = new RecursivePrefixTreeStrategy(grid, spatialField); strategy.setPointsOnly(config.get("spatial.docPointsOnly", false)); final boolean pruneLeafyBranches = config.get("spatial.pruneLeafyBranches", true); if (grid instanceof PackedQuadPrefixTree) { ((PackedQuadPrefixTree) grid).setPruneLeafyBranches(pruneLeafyBranches); strategy.setPruneLeafyBranches(false);//always leave it to packed grid, even though it isn't the same } else { strategy.setPruneLeafyBranches(pruneLeafyBranches); } int prefixGridScanLevel = config.get("query.spatial.prefixGridScanLevel", -4); if (prefixGridScanLevel < 0) prefixGridScanLevel = grid.getMaxLevels() + prefixGridScanLevel; strategy.setPrefixGridScanLevel(prefixGridScanLevel); double distErrPct = config.get("spatial.distErrPct", .025);//doc & query; a default strategy.setDistErrPct(distErrPct); return strategy; }