use of org.apache.jackrabbit.oak.plugins.index.property.strategy.IndexStoreStrategy in project jackrabbit-oak by apache.
the class PropertyIndexLookup method getCost.
public double getCost(Filter filter, String propertyName, PropertyValue value) {
NodeState indexMeta = getIndexNode(root, propertyName, filter);
if (indexMeta == null) {
return Double.POSITIVE_INFINITY;
}
Set<IndexStoreStrategy> strategies = getStrategies(indexMeta);
ValuePattern pattern = new ValuePattern(indexMeta.getString(IndexConstants.VALUE_PATTERN));
double cost = strategies.isEmpty() ? MAX_COST : COST_OVERHEAD;
for (IndexStoreStrategy s : strategies) {
cost += s.count(filter, root, indexMeta, encode(value, pattern), MAX_COST);
}
return cost;
}
use of org.apache.jackrabbit.oak.plugins.index.property.strategy.IndexStoreStrategy in project jackrabbit-oak by apache.
the class PropertyIndexLookup method query.
public Iterable<String> query(Filter filter, String propertyName, PropertyValue value) {
NodeState indexMeta = getIndexNode(root, propertyName, filter);
if (indexMeta == null) {
throw new IllegalArgumentException("No index for " + propertyName);
}
List<Iterable<String>> iterables = Lists.newArrayList();
ValuePattern pattern = new ValuePattern(indexMeta.getString(IndexConstants.VALUE_PATTERN));
for (IndexStoreStrategy s : getStrategies(indexMeta)) {
iterables.add(s.query(filter, propertyName, indexMeta, encode(value, pattern)));
}
return Iterables.concat(iterables);
}
Aggregations