Excerpt/hit.getExcerpt() is giving {relevant_links} as value when using QueryBuilderAPI

kamalakannank62

02-04-2019

I am Using Query builder API for fulltext search, When using hits.getExcerpt() i am getting value as {relevant_links} for few pages. But when checking the same under http://localhost:4502/libs/cq/search/content/querydebug.html  i was able to see proper excerpt for the pages. I have set setExcerpt to true while constructing the query before executing is there something am missing?

Answers (11)

Answers (11)

kamalakannank62

03-04-2019

One more thing is that when a page is having a text="Shipping" and if my search term is "ship", I am getting "{relevant_link}" as excerpt but when I Search "Shipping" i am getting a proper excerpt , Is there a way to make the Query to search exact word?

bsloki

MVP

02-04-2019

That doesnt sound right ! If you are getting right result in querydebug.hml, you should get the same with hit.getExcerpts aswell.. Did you see if there is any difference in the content between the pages where the correct excerpt is coming with the content on the other page ?

Can you provide a package with the sample content where you are seeing the wrong excerpt so that I can try to debug ?

kamalakannank62

02-04-2019

Yeah, I just added to check, Its not consistent, When tried the same with querydebug.html i was able to see consistent result, but here for some pages am getting proper result but for some pages i am not getting excerpt.

bsloki

MVP

02-04-2019

Hi,

I see you have already set "p.excerpt":"true", so you dont have to say q.setExcerpt(true); again.. you can remove that.

Also, is this output consistent for every result or only for few result ?

kamalakannank62

02-04-2019

bsloki​,

Please find the query snippet

Map<String, String> map = new HashMap<>();

  map.put("type", "nt:unstructured");

  map.put("fulltext", fulltextSearchTerm);

  map.put("path", localeRootPath);

  map.put("p.excerpt", "true");

  map.put("orderby", "@jcr:score");

  map.put("orderby.sort", "desc");

  map.put("p.limit", "-1");

  final QueryBuilder queryBuilder = getSling().getService(QueryBuilder.class);

  Query q = queryBuilder.createQuery(PredicateGroup.create(map),

                      getSling().getRequest().getResourceResolver().adaptTo(Session.class));

   q.setExcerpt(true);

  result = q.getResult();

for (Hit hit : result.getHits()) {

String excerpt = hit.getExcerpt(); //output is // {relevant_links}

}