Class UniqueEntryStoreStrategy
- java.lang.Object
-
- org.apache.jackrabbit.oak.plugins.index.property.strategy.UniqueEntryStoreStrategy
-
- All Implemented Interfaces:
IndexStoreStrategy
public class UniqueEntryStoreStrategy extends java.lang.Object implements IndexStoreStrategy
An IndexStoreStrategy implementation that saves the unique node in a single property.
This should reduce the number of nodes in the repository, and speed up access.
For example for a node that is under/test/node, the index structure will be/oak:index/index/@key:
-
-
Constructor Summary
Constructors Constructor Description UniqueEntryStoreStrategy()UniqueEntryStoreStrategy(java.lang.String indexName)UniqueEntryStoreStrategy(java.lang.String indexName, @NotNull java.util.function.Consumer<NodeBuilder> insertCallback)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description longcount(Filter filter, NodeState root, NodeState indexMeta, java.util.Set<java.lang.String> values, int max)Count the occurrence of a given set of values.longcount(NodeState root, NodeState indexMeta, java.util.Set<java.lang.String> values, int max)Count the occurrence of a given set of values.booleanexists(Supplier<NodeBuilder> index, java.lang.String key)Check whether an entry for the given key exists.java.lang.StringgetIndexNodeName()java.lang.Iterable<java.lang.String>query(Filter filter, java.lang.String indexName, NodeState indexMeta, java.lang.Iterable<java.lang.String> values)Search for a given set of values.java.lang.Iterable<IndexEntry>queryEntries(Filter filter, java.lang.String indexName, NodeState indexMeta, java.lang.Iterable<java.lang.String> values)Search for a given set of values, returning IndexEntry resultsvoidupdate(Supplier<NodeBuilder> index, java.lang.String path, @Nullable java.lang.String indexName, @Nullable NodeBuilder indexMeta, java.util.Set<java.lang.String> beforeKeys, java.util.Set<java.lang.String> afterKeys)Updates the index for the given path.
-
-
-
Constructor Detail
-
UniqueEntryStoreStrategy
public UniqueEntryStoreStrategy()
-
UniqueEntryStoreStrategy
public UniqueEntryStoreStrategy(java.lang.String indexName)
-
UniqueEntryStoreStrategy
public UniqueEntryStoreStrategy(java.lang.String indexName, @NotNull @NotNull java.util.function.Consumer<NodeBuilder> insertCallback)
-
-
Method Detail
-
update
public void update(Supplier<NodeBuilder> index, java.lang.String path, @Nullable @Nullable java.lang.String indexName, @Nullable @Nullable NodeBuilder indexMeta, java.util.Set<java.lang.String> beforeKeys, java.util.Set<java.lang.String> afterKeys)
Description copied from interface:IndexStoreStrategyUpdates the index for the given path.- Specified by:
updatein interfaceIndexStoreStrategy- Parameters:
index- the index node supplierpath- path stored in the indexindexName- the name of the index. May be null.indexMeta- the definition of the index. May be null.beforeKeys- keys that no longer apply to the pathafterKeys- keys that now do apply to the path
-
query
public java.lang.Iterable<java.lang.String> query(Filter filter, java.lang.String indexName, NodeState indexMeta, java.lang.Iterable<java.lang.String> values)
Description copied from interface:IndexStoreStrategySearch for a given set of values.- Specified by:
queryin interfaceIndexStoreStrategy- Parameters:
filter- the filter (can optionally be used for optimized query execution)indexName- the name of the index (for logging)indexMeta- the index metadata node (may not be null)values- values to look for (null to check for property existence)- Returns:
- an iterator of paths
-
queryEntries
public java.lang.Iterable<IndexEntry> queryEntries(Filter filter, java.lang.String indexName, NodeState indexMeta, java.lang.Iterable<java.lang.String> values)
Search for a given set of values, returning IndexEntry results- Parameters:
filter- the filter (can optionally be used for optimized query execution)indexName- the name of the index (for logging)indexMeta- the index metadata node (may not be null)values- values to look for (null to check for property existence)- Returns:
- an iterator of index entries
- Throws:
java.lang.UnsupportedOperationException- if the operation is not supported
-
exists
public boolean exists(Supplier<NodeBuilder> index, java.lang.String key)
Description copied from interface:IndexStoreStrategyCheck whether an entry for the given key exists.- Specified by:
existsin interfaceIndexStoreStrategy- Parameters:
index- the index node supplierkey- the key- Returns:
- true if at least one entry exists
-
count
public long count(NodeState root, NodeState indexMeta, java.util.Set<java.lang.String> values, int max)
Description copied from interface:IndexStoreStrategyCount the occurrence of a given set of values. Used in calculating the cost of an index.- Specified by:
countin interfaceIndexStoreStrategy- Parameters:
root- the root node (may not be null)indexMeta- the index metadata node (may not be null)values- values to look for (null to check for property existence)max- the maximum value to return- Returns:
- the aggregated count of occurrences for each provided value
-
count
public long count(Filter filter, NodeState root, NodeState indexMeta, java.util.Set<java.lang.String> values, int max)
Description copied from interface:IndexStoreStrategyCount the occurrence of a given set of values. Used in calculating the cost of an index.- Specified by:
countin interfaceIndexStoreStrategy- Parameters:
filter- the filter which can be used to estimate better costroot- the root node (may not be null)indexMeta- the index metadata node (may not be null)values- values to look for (null to check for property existence)max- the maximum value to return- Returns:
- the aggregated count of occurrences for each provided value
-
getIndexNodeName
public java.lang.String getIndexNodeName()
- Specified by:
getIndexNodeNamein interfaceIndexStoreStrategy
-
-