Ordered oak index | Community
Skip to main content
crisr1
Level 4
October 16, 2015
Solved

Ordered oak index

  • October 16, 2015
  • 2 replies
  • 1268 views

Running AEM6 SP2, Oak 1.0.11

We have people directory pages which list people by last name alphabetically. I see log messages about node traversal, and want an optimized query. We will end up with maybe 7000 people spread across 120 or so departments... the error message occurs when a request hits the people directory pages. I'm attempting to follow indexing documentation... and it seems like the index should be setup- see attached screenshot from crxde. Oak doesn't seem to use my index, and still uses the cq:template index instead.

[img]Screen Shot 2015-04-15 at 5.09.51 PM.png[/img]

15.04.2015 16:21:08.307 *WARN* [0:0:0:0:0:0:0:1 [1429129268281] GET /content/michigan-lsa/stats/en/people/jcr:content/par/people_list.results.html HTTP/1.1] org.apache.jackrabbit.oak.plugins.index.property.strategy.ContentMirrorStoreStrategy Traversed 3000 nodes using index cq:template with filter Filter(query= select [jcr:path], [jcr:score], * from [cq:Page] as a where [jcr:content/cq:template] in('/apps/michigan-lsa/templates/department_person_profile', '/apps/michigan-lsa/templates/department_person_secondary_profile') and isdescendantnode(a, '/content/michigan-lsa/stats/en/people') order by [jcr:content/lastName] /*  xpath: /jcr:root/content/michigan-lsa/stats/en/people//element(*, cq:Page)[(jcr:content/@cq:template = '/apps/michigan-lsa/templates/department_person_profile' or jcr:content/@cq:template = '/apps/michigan-lsa/templates/department_person_secondary_profile')] order by jcr:content/@lastName */, path=/content/michigan-lsa/stats/en/people//*, property=[jcr:content/cq:template=in(/apps/michigan-lsa/templates/department_person_profile, /apps/michigan-lsa/templates/department_person_secondary_profile)])

 

Secondly. I would like to use  /etc/acs-tools/explain-query.html as suggested in the documentation. But it doesn't work and I see JS errors in the console

Error: [$injector:unpr] http://errors.angularjs.org/1.2.23/$injector/unpr?p0=aProvider%20%3C-%20a at Error (native) at http://localhost:4502/etc/clientlibs/acs-tools/vendor/angularjs.min.js:5:9 at http://localhost:4502/etc/clientlibs/acs-tools/vendor/angularjs.min.js:400:40 at Object.X [as get] (http://localhost:4502/etc/clientlibs/acs-tools/vendor/angularjs.min.js:371:38) at http://localhost:4502/etc/clientlibs/acs-tools/vendor/angularjs.min.js:401:43 at X (http://localhost:4502/etc/clientlibs/acs-tools/vendor/angularjs.min.js:371:38) at V (http://localhost:4502/etc/clientlibs/acs-tools/vendor/angularjs.min.js:380:43) at Object.D.instantiate (http://localhost:4502/etc/clientlibs/acs-tools/vendor/angularjs.min.js:386:4) at http://localhost:4502/etc/clientlibs/acs-tools/vendor/angularjs.min.js:883:5 at http://localhost:4502/etc/clientlibs/acs-tools/vendor/angularjs.min.js:690:4
This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by AdolfoDePaz

Instead, use a Lucene Non Root Index under /content/michigan-lsa/ and add the properties that are refer in your query, also think to optimize your query try to use slingResouceType instead of cq:temple. You can debug your query and the index using ACS Tools

select [jcr:path], [jcr:score], * from [cq:Page] as a where [jcr:content/cq:template] in('/apps/michigan-lsa/templates/department_person_profile', '/apps/michigan-lsa/templates/department_person_secondary_profile') and isdescendantnode(a, '/content/michigan-lsa/stats/en/people') order by [jcr:content/lastName]

 

There is a good example here : https://helpx.adobe.com/experience-manager/kb/aem6-available-hotfixes.html

And also check the OAK Lucene Documentation, there is lot of parameters you can use in your Lucene index

2 replies

AdolfoDePaz
AdolfoDePazAccepted solution
Level 2
October 16, 2015

Instead, use a Lucene Non Root Index under /content/michigan-lsa/ and add the properties that are refer in your query, also think to optimize your query try to use slingResouceType instead of cq:temple. You can debug your query and the index using ACS Tools

select [jcr:path], [jcr:score], * from [cq:Page] as a where [jcr:content/cq:template] in('/apps/michigan-lsa/templates/department_person_profile', '/apps/michigan-lsa/templates/department_person_secondary_profile') and isdescendantnode(a, '/content/michigan-lsa/stats/en/people') order by [jcr:content/lastName]

 

There is a good example here : https://helpx.adobe.com/experience-manager/kb/aem6-available-hotfixes.html

And also check the OAK Lucene Documentation, there is lot of parameters you can use in your Lucene index

smacdonald2008
Level 10
October 16, 2015

If you are following the AEM documentation and encounter errors - there is a bug - please open a ticket here: 

https://helpx.adobe.com/marketing-cloud/experience-manager.html