/** * Get the current absolute Oak path (normalized). * * @return the path */ public String currentPath() { return cursor == null ? null : currentRow.getPath(); }
@Override public String getIndexName() { if (baseIndex == null) { return "aggregate no-index"; } return "aggregate " + baseIndex.getIndexName(); }
@Override public long getSize(SizePrecision precision, long max) { if (cursor == null) { return -1; } return cursor.getSize(precision, max); }
protected static IndexPlan.Builder planBuilder(Filter filter){ return new IndexPlan.Builder() .setCostPerExecution(0) // we're local. Low-cost .setCostPerEntry(1) .setFilter(filter) .setFulltextIndex(true) .setEstimatedEntryCount(0) //TODO Fake it to provide constant cost for now .setIncludesNodeData(false) // we should not include node data .setDelayed(true); //Lucene is always async }
@Override @Nonnull public List<? extends QueryIndex> getQueryIndexes(NodeState nodeState) { QueryIndexProvider composite = CompositeQueryIndexProvider.compose(getServices()); return composite.getQueryIndexes(nodeState); }
@Override public boolean hasNext() { return c.hasNext(); } };
@Override public double getCost(Filter filter, NodeState rootState) { if (filter.getPropertyRestriction("jcr:uuid") != null) { return 1; } return Double.MAX_VALUE; }
@Override public PropertyValue getValue(String columnName) { return currentRow.getValue(columnName); }
/** * Get the specific index name (the path of the index definition, or the * index type if that one is unique). * * @return the index name */ default String getIndexName(Filter filter, NodeState rootState) { return getIndexName(); }
@Override public double getMinimumCost() { return baseIndex.getMinimumCost(); }
private IndexPlan.Builder planBuilder(Filter filter) { return new IndexPlan.Builder() .setCostPerExecution(1.5) // disk I/O + network I/O .setCostPerEntry(0.3) // with properly configured SolrCaches ~70% of the doc fetches should hit them .setFilter(filter) .setFulltextIndex(true) .setIncludesNodeData(true) // we currently include node data .setDelayed(true); //Solr is most usually async }
/** * Get the current absolute Oak path (normalized). * * @return the path */ public String currentPath() { return cursor == null ? null : currentRow.getPath(); }
@Override @NotNull public List<? extends QueryIndex> getQueryIndexes(NodeState nodeState) { QueryIndexProvider composite = CompositeQueryIndexProvider.compose(getServices()); return composite.getQueryIndexes(nodeState); }
@Override public long getSize(Result.SizePrecision precision, long max) { return c.getSize(precision, max); }
@Override public String getIndexName() { if (baseIndex == null) { return "aggregate no-index"; } return "aggregate " + baseIndex.getIndexName(); }
protected static IndexPlan.Builder planBuilder(Filter filter){ return new IndexPlan.Builder() .setCostPerExecution(0) // we're local. Low-cost .setCostPerEntry(1) .setFilter(filter) .setFulltextIndex(true) .setEstimatedEntryCount(0) //TODO Fake it to provide constant cost for now .setIncludesNodeData(false) // we should not include node data .setDelayed(true); //Lucene is always async }
/** * Get the current absolute Oak path (normalized). * * @return the path */ public String currentPath() { return cursor == null ? null : currentRow.getPath(); }
@Override public String getIndexName() { if (baseIndex == null) { return "aggregate no-index"; } return "aggregate " + baseIndex.getIndexName(); }
private IndexPlan.Builder planBuilder(Filter filter) { return new IndexPlan.Builder() .setCostPerExecution(1.5) // disk I/O + network I/O .setCostPerEntry(0.3) // with properly configured SolrCaches ~70% of the doc fetches should hit them .setFilter(filter) .setFulltextIndex(true) .setIncludesNodeData(true) // we currently include node data .setDelayed(true); //Solr is most usually async }
@Override public String getPath() { return pathRow.getPath(); }