Search in sources :

Example 6 with IndexStoreStrategy

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;
}
Also used : NodeState(org.apache.jackrabbit.oak.spi.state.NodeState) IndexStoreStrategy(org.apache.jackrabbit.oak.plugins.index.property.strategy.IndexStoreStrategy)

Example 7 with IndexStoreStrategy

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);
}
Also used : NodeState(org.apache.jackrabbit.oak.spi.state.NodeState) IndexStoreStrategy(org.apache.jackrabbit.oak.plugins.index.property.strategy.IndexStoreStrategy)

Aggregations

IndexStoreStrategy (org.apache.jackrabbit.oak.plugins.index.property.strategy.IndexStoreStrategy)7 NodeState (org.apache.jackrabbit.oak.spi.state.NodeState)3 Sets.newHashSet (com.google.common.collect.Sets.newHashSet)2 NodeBuilder (org.apache.jackrabbit.oak.spi.state.NodeBuilder)2 Function (com.google.common.base.Function)1 Predicate (com.google.common.base.Predicate)1 HashSet (java.util.HashSet)1 Set (java.util.Set)1 FilteringIndexStoreStrategy (org.apache.jackrabbit.oak.plugins.index.property.strategy.FilteringIndexStoreStrategy)1 QueryEngineSettings (org.apache.jackrabbit.oak.query.QueryEngineSettings)1 Mount (org.apache.jackrabbit.oak.spi.mount.Mount)1 Cursor (org.apache.jackrabbit.oak.spi.query.Cursor)1