Hi Jorge You could try the Oak Index Definition Generator.
http://oakutils.appspot.com/generate/index FWIW, in the "name" property node it sets [name = ":name"] instead of [function = "fn:name"]. I don't know if that makes a difference and which is better, if any. Regards Julian On Mon, May 18, 2020 at 11:55 PM jorgeeflorez . <jorgeeduardoflo...@gmail.com> wrote: > > Hello, > with the following query I am able to get file nodes ordered by name: > > SELECT * FROM [nt:file] AS s WHERE ISCHILDNODE(s, [/repo1/pruebaJF1]) ORDER > BY NAME([s]) DESC > > unfortunately, because I do not have an index, on a big repository I have > warnings like: > > WARN org.apache.jackrabbit.oak.plugins.index.Cursors$TraversingCursor - > Traversed 81000 nodes with filter Filter(query=SELECT * FROM [nt:file] AS s > WHERE ISCHILDNODE(s, [/repo1/pruebaJF1]) ORDER BY NAME([s]) DESC, > path=/repo1/pruebaJF1/*); consider creating an index or changing the query > > and the query takes a lot of time. > > I do not know how to define a proper index for name(). if I use the > following: > - compatVersion = 2 > - async = "async" > - jcr:primaryType = oak:QueryIndexDefinition > - evaluatePathRestrictions = true > - type = "lucene" > + indexRules > + nt:file > + properties > + primaryType > - name = "jcr:primaryType" > - propertyIndex = true > + name > - function = "fn:name" > - ordered = true > - type = "String" > > the index is used (index cost is 501 compared to 80946 for traverse), but > it takes more time than traversing with warnings like: > > WARN > org.apache.jackrabbit.oak.plugins.index.search.spi.query.FulltextIndex$FulltextPathCursor > - Index-Traversed 80000 nodes with filter Filter(query=SELECT * FROM > [nt:file] AS s WHERE ISCHILDNODE(s, [/repo1/pruebaJF1]) ORDER BY NAME([s]) > DESC, path=/repo1/pruebaJF1/*) > > Thanks in advance. > > Regards. > > Jorge