public IndexPlan getPlan() { if (definition == null) { log.debug("Index {} not loaded", indexPath); return null; } IndexPlan.Builder builder = getPlanBuilder(); if (definition.isTestMode()){ if (builder == null) { if (notSupportedFeature()) { return null; } String msg = String.format("No plan found for filter [%s] " + "while using definition [%s] and testMode is found to be enabled", filter, definition); throw new IllegalStateException(msg); } else { builder.setEstimatedEntryCount(1) .setCostPerExecution(1e-3) .setCostPerEntry(1e-3); } } return builder != null ? builder.build() : null; }
.setAttribute(ATTR_INDEX_PATH, indexPath) .setDeprecated(defn.isDeprecated()) .build());
.setAttribute(ATTR_INDEX_PATH, indexPath) .setDeprecated(defn.isDeprecated()) .build());
private IndexPlan getIndexPlan(Filter filter, OakSolrConfiguration configuration, LMSEstimator estimator, List<OrderEntry> sortOrder, String path) { if (getMatchingFilterRestrictions(filter, configuration) > 0) { IndexPlan indexPlan = planBuilder(filter) .setEstimatedEntryCount(estimator.estimate(filter)) .setSortOrder(sortOrder) .setPlanName(path) .setPathPrefix(getPathPrefix(path)) .build(); log.debug("index plan {}", indexPlan); return indexPlan; } else { return null; } }
private IndexPlan getIndexPlan(Filter filter, OakSolrConfiguration configuration, LMSEstimator estimator, List<OrderEntry> sortOrder, String path) { if (getMatchingFilterRestrictions(filter, configuration) > 0) { IndexPlan indexPlan = planBuilder(filter) .setEstimatedEntryCount(estimator.estimate(filter)) .setSortOrder(sortOrder) .setPlanName(path) .setPathPrefix(getPathPrefix(path)) .build(); log.debug("index plan {}", indexPlan); return indexPlan; } else { return null; } }
@Test public void attribute() throws Exception{ IndexPlan plan = new IndexPlan.Builder().setAttribute("foo", "bar").build(); assertEquals("bar", plan.getAttribute("foo")); }
@Test public void builder() { IndexPlan.Builder b = new IndexPlan.Builder(); IndexPlan plan = b.setEstimatedEntryCount(10).build(); assertEquals(10, plan.getEstimatedEntryCount()); b.setEstimatedEntryCount(20); assertEquals(10, plan.getEstimatedEntryCount()); }
void addPlan(String name, long cost, boolean supportsPathRestriction) { plans.add(new IndexPlan.Builder() .setCostPerEntry(1) .setCostPerExecution(1) .setEstimatedEntryCount(cost) .setSupportsPathRestriction(supportsPathRestriction) .setPlanName(name) .build()); }
@Test public void copy() throws Exception{ Filter f = new FilterImpl(null, "SELECT * FROM [nt:file]", new QueryEngineSettings()); IndexPlan.Builder b = new IndexPlan.Builder(); IndexPlan plan1 = b.setEstimatedEntryCount(10).setFilter(f).setDelayed(true).build(); IndexPlan plan2 = plan1.copy(); plan2.setFilter(new FilterImpl(null, "SELECT * FROM [oak:Unstructured]", new QueryEngineSettings())); assertEquals(plan1.getEstimatedEntryCount(), 10); assertEquals(plan2.getEstimatedEntryCount(), 10); assertTrue(plan1.isDelayed()); assertTrue(plan2.isDelayed()); assertEquals(plan1.getFilter().getQueryStatement(), "SELECT * FROM [nt:file]"); assertEquals(plan2.getFilter().getQueryStatement(), "SELECT * FROM [oak:Unstructured]"); }
@Override public List<IndexPlan> getPlans(Filter filter, List<OrderEntry> sortOrder, NodeState rootState) { String indexPath = LuceneIndexLookupUtil.getOldFullTextIndexPath(rootState, filter, tracker); if (indexPath == null){ return Collections.emptyList(); } return Collections.singletonList(planBuilder(filter) .setCostPerExecution(getMinimumCost()) .setAttribute(ATTR_INDEX_PATH, indexPath) .build()); } }