Hi Gimantha, This is a very useful functionality. Thanks for adding this. I have 1 question. Can you tell me the difference of result between the following 2 combinations.
"sortType" : "DESC" "reversed" : false and "sortType" : "ASC" "reversed" : true My query is, that if you can do either ASC or DESC, why do you need a separate parameter to reverse the order? What am I missing? seshi On Wed, Mar 16, 2016 at 6:21 PM, Gimantha Bandara <giman...@wso2.com> wrote: > Hi all, > > We have two methods in AnalyticsDataService namely "search" and > "getDrillDownRecords". These two methods returns record Ids sorted by the > Relevance score ( Relevance score is generated by Lucene at the search > time. Record ids that match most with the given search query will have a > higher score and will be the first records that comes first in the result > list). With the new sorting functionality, the matching records can be > retrieved either descending or ascending sort order of a specific field/s. > > Followings are the new search methods added to AnalyticsDataService. > > List<SearchResultEntry> search(int tenantId, String tableName, String > query, int start, int count, *List<SortByField> sortByFields*) throws > AnalyticsException > List<SearchResultEntry> drillDownSearch(int tenantId, > AnalyticsDrillDownRequest request) throws AnalyticsIndexException > > The last parameter to search method is srotByField. This is a list which > contains the fields by which the users wants to sort the records. > SortByField class will have the 3 attributes, fieldName, sortType, > isReversed. > > 1. *fieldName* is the field by which the records need to be sorted. > 2. *sortType* is either SORT.ASC or SORT.DESC (Denotes ascending or > descending) > 3. *isRevesed* says whether the sorted records need to be returned > reversed in order or not. (optional) > > Search APIs take a list of SortByFields, which means the records can be > sorted by multiple fields. Records will be sorted by the second SortByField > if the value for the first SortByField is same. > > > > > *REST APIs* > > > *Search* > Analytics REST call[1] now has an additional parameter call "sortBy" to > support sorting. A sample request payload will look like below. > > POST https://localhost:9443/analytics/search > > { > "tableName" : "Students", > "query" : "Grade:10", > "start" : 0, > "count" : 100, > "sortBy" : [{ > "field" : "totalScore", > "sortType" : "DESC" //can be DESC or ASC > "reversed" : false //optional > }] > } > > Above will return the matching records sorted by totalScore field in > descending order. > > > > *Drilldown* > Drilldown API[2] also supports sorting. Following is a sample request on > how to sort the students whose City is Colombo and who are in Grade 10 in > descending order. > > POST https://localhost:9443/analytics/drilldown > > { > "tableName":"Students", > "categories":[ > { > "fieldName":"location", > "path":["Sri Lanka", "Colombo] > } > ], > "query":"Grade:10", > "recordCount":100, > "sortBy":[ > { > "field":"totalScore", > "sortType":"DESC" > } > ] > } > > > > *Javascript APIs* > > Javascript APIs is used at client side for custom development based on DAS. > > *Search* > > Search method[3] in Javascript APIs has an additional parameter to pass > sort information to get sorted records. Following is a sample JS call to > get sorted records. > > var queryInfo = { > tableName : "Students", > searchParams : { > query : "Grade : 10", > start : 0, > count : 100, > sortBy : [ > { > field : "totalScore", > sortType : "DESC", // This can be ASC, DESC > reversed : "false" //optional > } > ] > } > }; > > client.search(queryInfo, function(data) { > console.log (data["message"]); > }, function(error) { > console.log("error occured: " + error["message"]); > }); > > > *DrillDown* > Using DrillDown API[4] in JS APIs, we can achieve the same as REST > DrillDown API. Following is a sample request on how to sort the students > whose City is Colombo and who are in Grade 10 in descending order. > > var drillDownReq = { > tableName : "Students", > drillDownInfo : { > categories : [ > { > fieldName : "location", > path : ["Srilanka", "Colombo"] > }] > query : "Grade : 10", > recordStart : 0, > recordCount : 100, > sortBy : [ > { > field : "totalScore", > sortType : "DESC", // This can be ASC, DESC > reversed : "false" //optional > } > ] > }; > > client.drillDownSearch(drillDownReq, function(data) { > console.log (data["message"]); > }, function(error) { > console.log("error occured: " + error); > }); > > Please note that the fields that you wants records to be sorted by, need > to be indexed beforehand. > > [1] > https://docs.wso2.com/display/DAS301/Retrieving+Specific+Records+through+a+Drill+Down+Search+via+REST+API > [2] > https://docs.wso2.com/display/DAS301/Retrieving+All+Records+Matching+the+Given+Search+Query+via+REST+API > [3] > https://docs.wso2.com/display/DAS301/Retrieving+All+Records+Matching+the+Given+Search+Query+via+JS+API > [4] > https://docs.wso2.com/display/DAS301/Retrieving+Specific+Records+through+a+Drill+Down+Search+via+JS+API > > -- > Gimantha Bandara > Software Engineer > WSO2. Inc : http://wso2.com > Mobile : +94714961919 > > _______________________________________________ > Architecture mailing list > Architecture@wso2.org > https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture > >
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture