Aem results | Community
Skip to main content
September 20, 2024
Solved

Aem results

  • September 20, 2024
  • 2 replies
  • 708 views

Hi All, 

I have a requirement to get search results based on search term I was able to do that and categorie them based on tags but along with category I need to show total results

But for pagenation I'm using offset and limit in the query with same query we need to get total results of that is there any way?

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 SureshDhulipudi

you can try like the below:

 

public SearchResult performSearch(String searchTerm, int offset, int limit, ResourceResolver resourceResolver) {
Map<String, String> map = new HashMap<>();
map.put("type", "cq:Page");
map.put("fulltext", searchTerm);
map.put("p.offset", String.valueOf(offset));
map.put("p.limit", String.valueOf(limit));

QueryBuilder queryBuilder = resourceResolver.adaptTo(QueryBuilder.class);
Query query = queryBuilder.createQuery(PredicateGroup.create(map), resourceResolver.adaptTo(Session.class));
SearchResult result = query.getResult();

// To GET Total number of search result matched
long totalMatches = result.getTotalMatches();

// Iterate over the hits
for (Hit hit : result.getHits()) {
// // Now iterate through hit and display the result
}

return result;
}

2 replies

h_kataria
Community Advisor
Community Advisor
September 21, 2024
SureshDhulipudi
Community Advisor
SureshDhulipudiCommunity AdvisorAccepted solution
Community Advisor
September 23, 2024

you can try like the below:

 

public SearchResult performSearch(String searchTerm, int offset, int limit, ResourceResolver resourceResolver) {
Map<String, String> map = new HashMap<>();
map.put("type", "cq:Page");
map.put("fulltext", searchTerm);
map.put("p.offset", String.valueOf(offset));
map.put("p.limit", String.valueOf(limit));

QueryBuilder queryBuilder = resourceResolver.adaptTo(QueryBuilder.class);
Query query = queryBuilder.createQuery(PredicateGroup.create(map), resourceResolver.adaptTo(Session.class));
SearchResult result = query.getResult();

// To GET Total number of search result matched
long totalMatches = result.getTotalMatches();

// Iterate over the hits
for (Hit hit : result.getHits()) {
// // Now iterate through hit and display the result
}

return result;
}