A customer is having trouble with some search queries and provides the following information:
* The logs show the following warning occurs many time: WARN* Traversed 1000 nodes with filter Filter (query=select...)
* The client has more than 100,000 stored in their AEM instance
* The client uses a custom page property to help search for pages of a given type
What should the AEM Developer do to help resolve the client's issue?
The warning WARN* Traversed 1000 nodes with filter Filter (query=select...) indicates that the query is performing a traversal instead of using an index. This results in poor performance, especially when the client has a large number of nodes (e.g., more than 100,000).
To resolve this issue, you should create a custom Oak index for the custom page property. This ensures that the queries can leverage the index for efficient data retrieval.
Steps to create a custom Oak index:
Define the Oak Index:
Navigate to the /oak:index node in CRXDE Lite (http://localhost:4502/crx/de).
Create a new node of type oak:QueryIndexDefinition.
Configure the Index:
Set the properties of the new index node to define the indexing rules for the custom page property.
{
'jcr:primaryType': 'oak:QueryIndexDefinition',
'type': 'property',
'propertyNames': ['customPageProperty'],
'reindex': true,
'async': 'async'
}
Deploy and Reindex:
Save the changes and initiate a reindexing process.
Ensure that the reindex flag is set to true for the newly created index.
Validate the Index:
Use the Index Manager or the AEM Web Console to validate that the new index is enabled and functioning correctly.
By creating a custom Oak index for the custom page property, the queries will be optimized to use the index, significantly improving the search performance and resolving the client's issue.
Which property under /cache on dispatcher.any file identifies the directory where cached files are stored?
After defining a Sling Model, what step is required to enable JSON export on any component?
To enable JSON export on any component after defining a Sling Model, you need to annotate the Sling Model interface with @Exporter annotation. This annotation is part of the Sling Model Exporter framework which allows Sling Models to be exported in JSON format.
Here is the detailed step-by-step explanation:
Define the Sling Model: Define your Sling Model with the necessary annotations and methods. For example:
@Model(adaptables = Resource.class)
public class MyModel {
@Inject
private String title;
public String getTitle() {
return title;
}
}
Annotate with @Exporter: Annotate the Sling Model class with @Exporter to enable JSON export. The @Exporter annotation configures the model to be exported as JSON.
@Model(adaptables = Resource.class)
@Exporter(name = 'jackson', extensions = 'json')
public class MyModel {
@Inject
private String title;
public String getTitle() {
return title;
}
}
Access the JSON Output: Once annotated, the JSON representation of the model can be accessed through the .model.json extension. For example, if your component is at /content/mysite/en, you can access the JSON output at:
http://localhost:4502/content/mysite/en.model.json
This approach leverages the Sling Model Exporter framework to seamlessly convert Sling Models to JSON format, making it easy to integrate with front-end frameworks and other systems that consume JSON data.
A custom component has one dialog field:
The developer needs to implement a Sling Model to perform a business logic on the authored value. The developer writes the following HTL snippet.
Which two implementations will support this HTL snippet? (Choose two.)
A)
B)
C)
D)