I am using Query Builder API to query through the documents matching certain criteria, Here is the sample query from query debug tool,
path=/content/dam/mchp/documents
type=dam:Asset
property.and=true
1_property=jcr:content/metadata/mchp:document-category
1_property.value=documents:product-documents/code-examples
2_property=jcr:content/metadata/mchp:document-application
2_property.operation=exists
p.hits=selective
p.properties=jcr:title
p.nodedepth=5
p.limit=-1
When I see the result as JSON response ,
Both Results and Total are different values. In API also results are coming as 283 only.
Wanted to know what is the difference between total and result ? and Y it is coming as different values?
Thanks in Advance.
Solved! Go to Solution.
Views
Replies
Total Likes
Can you try adding p.guessTotal=1000 and remove p.limit ? so it will read up to 1000, to get exact total. But if total is more than 1000, then 'more' will be true and you need to extract the result using offset until 'more' gets false.
Ideally the query run in the query builder and Query builder API should return the same hits. Can you check if you are missing any properties like p.limit etc which is making the results come low?
Thanks,
Kiran Vedantam
I have added p.limit to the query still it is not matching.
Thanks,
Poovitha S
what value added as p.limit and what's the value of more field? Please share the query output.
Hi @Chandra_Hire ,
p.limit i am setting as -1.
"success": true,
"results": 262,
"total": 970,
"more": false,
"offset": 0,
Can you try adding p.guessTotal=1000 and remove p.limit ? so it will read up to 1000, to get exact total. But if total is more than 1000, then 'more' will be true and you need to extract the result using offset until 'more' gets false.
'total' in JSON result is an outcome of SearchResult.getTotalMatches() method call and Returns the total number of matches or the total as far as it is known. This depends on the query, i.e. it might just retrieve the minimum necessary up to getStartIndex()
+ getHitsPerPage()
. In your case 'more' is false it means getTotalMatches() returned the exact number of Hits.
Also, 'result' in JSON is an outcome of SearchResult.getHits() and which is a List of Hit
s to display on the result page. though p.limit is set to -1 to display all the results (total filed in json), Querybuilder by default sets the number of hits to be returned as 'result' (getHits()) based on the query. This can be verified with JCR API SearchResult.getHitsPerPage() and should return the number equal to the number displayed in 'result' field of JSON. In your case it should be 283.
You can add pagination (offset/limit/guessTotal) to traverse all Hits (results). Hope this helps.
Have a look for reference
SearchResult (The Adobe AEM Quickstart and Web Application.)