Does AEM Query builder API allow searching the Content Fragment Core component's content included within a Page? | Community
Skip to main content
Level 2
September 23, 2019

Does AEM Query builder API allow searching the Content Fragment Core component's content included within a Page?

  • September 23, 2019
  • 1 reply
  • 15668 views

Hi All,

Please advise if AEM Query builder API supports searching of Content Fragment's (Adobe's Core component) content included within a Page.

I have added a Content Fragment core component on an empty content page (newly created) and authored all the required values for the component including fragmentPath. The component renders as expected and displays the Content Fragment data. However, when I tried searching for the data within content fragment using the following sample queries through Query Builder Debugger, it did not return any results. I am not sure if any new predicates are needed to enable the search functionality for content fragments.

Query Builder query 1:

type=cq:Page

path=<search path>(e.g., /content/we-retail/us/en)

fulltext=<searchterm> (e.g., winter)

Query Builder query 2:

type=cq:Page

path=<search path>(e.g., /content/we-retail/us/en)

fulltext=<searchterm> (e.g., winter)

contentfragment

AEM Version: 6.3.3.0

AEM Core Components Version: 2.5.0

Any advise or guidance would be greatly appreciated. Thank you in advance.

kautuk sahni  smacdonald2008

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

1 reply

Adobe Employee
September 23, 2019

You can try a query similar to:

type=nt:unstructure

path=/content/we-retail/us

1_group.1_property=sling:resourceType

1_group.1_property.value=weretail/components/content/contentfragment

fulltext=winter

Level 2
September 23, 2019

berliant​ Thanks for your prompt reply!

However, the provided query does not seem to work (no search results) for the specified scenario (Trying to search content fragment component data included within page).

type=nt:unstructured

path=/content/we-retail/us/en

1_group.1_property=sling:resourceType

1_group.1_property.value=weretail/components/content/contentfragment

fulltext=winter

Please note that the actual content fragment data is not being saved within page node structure as it is only being referenced through the "fragmentPath" property. Also, the core content fragment component has already been proxied under we-retail directory/project - "/apps/weretail/components/content/contentfragment". Let me know if you have any questions.

Adobe Employee
September 24, 2019

berliant​ Really appreciate your prompt response.

Sorry, I forgot to mention that I have been trying to search for "Structured Content Fragments" created using custom Content Fragment Model. The search had been working appropriately for a simple content fragment but does not seem to work with the structured content fragments.

Find below the structured content fragment included on a test page. The main difference I could see is that the "text" property ( which is created automatically for simple fragments) containing the fragment data/text is not being created within component node as multiple model elements are being referenced in this case under "master" variation. The search may not be working as the text is not attached to the page node and is just being referenced through "fragmentPath" property.

Find below the structured content fragment created with a new Content Fragment Model containing "name", "age", "sport", "about" elements.


Please review and advise if Query builder API supports searching the structured content fragments as well or just the simple content fragments.


You need to index your custom properties: "about", "name", "age" etc.

The query that I provided executes the plan:

PLAN: [cq:Page] as [a] /* lucene:cqPageLucene(/oak:index/cqPageLucene) +(+:fulltext:winter +:fulltext:contentfragment) +:ancestors:/content/we-retail/us ft:("winter" "contentfragment") where (contains([a].[*], 'winter')) and (contains([a].[*], 'contentfragment')) and (isdescendantnode([a], [/content/we-retail/us])) */

It means that you need to edit cqPageLucene index by adding a dedicated property. For example, for "about" it should be something like:

Make sure that you re-index /oak:index/cqPageLucene prior of testing the query.