Apache Oak, a subproject of the Apache Jackrabbit project. This repository promises significant performance increases over CRX2, however it does require a bit more work to setup.
Unlike CRX2, CRX3 requires you to explicitly declare which fields will be indexed. If a field is not indexed, you will see an error like the one below in the error.log and significant performance degredation:
24.02.2015 14:03:15.997 WARN [0:0:0:0:0:0:0:1 [1424804529693] GET /bin/servlet HTTP/1.1] org.apache.jackrabbit.oak.plugins.index.property.strategy.ContentMirrorStoreStrategy Traversed 333000 nodes using index cq:tags with filter Filter(query=select [jcr:path], [jcr:score], from [nt:base] as a where [jcr:content/cq:tags] like 'some/tag%' and [jcr:primaryType] = 'cq:Page' / xpath: //*[(jcr:like(jcr:content/@cq:tags, 'some/tag%') and (@jcr:primaryType = 'cq:Page'))] /, path=, property=[jcr:content/cq:tags=[some/tag..some/tag], jcr:primaryType=cq:Page])
To to correct this issue and restore acceptable performance, you should configure your Oak Index to add the required properties. Adobe has already produced good information on this, as well as a nifty tool for seeing the indexes. But how do you go ahead and package this up as part of your project? It’s pretty simple, just do the following:
declaringNodeTypes
and propertyNames
must be of type Name, not just String.Once you install your packages, your new oak indexes will appear and be ready for use. I’d recommend reindexing manually as you don’t want this to occur with every package deployment.