I have resolved the bug. https://issues.apache.org/jira/browse/BLUR-340
Thanks for reporting it! Aaron On Tue, Jun 17, 2014 at 1:00 PM, Aaron McCurry <[email protected]> wrote: > My testing shows that the sort is broken, I'm working on fixing it now. > > Aaron > > > On Tue, Jun 17, 2014 at 10:28 AM, Aaron McCurry <[email protected]> > wrote: > >> On Tue, Jun 17, 2014 at 10:08 AM, Dibyendu Bhattacharya < >> [email protected]> wrote: >> >>> Hi, >>> >>> I think there are still issue in sorting. As I iterate over the >>> BlurResult >>> , I can see data are partially sorted. e.g. I have 3 shard server, and if >>> my search return say 100 records, I do not see all 100 are sorted, but >>> subset of those records are sorted. Is the sorting happening on shard >>> server level and thus three cluster of sorted results I am getting which >>> are basically sorted set from a given shard server ? >>> >> >> You could isolate where the problem lies (controller or shard server) by >> connecting your client to the shard server and seeing if the results are >> correct from there. The shard server and controller server share the same >> api so you would just need to alter the connection string to reflect the >> shard server ( <node name>:40020 ). >> >> I am in the process of testing right now. I will let you know what I >> find. >> >> Aaron >> >> >>> >>> Dib >>> >>> >>> >>> On Tue, Jun 17, 2014 at 6:48 PM, Aaron McCurry <[email protected]> >>> wrote: >>> >>> > Ok, we need to provide a better error message. Glad to hear that >>> things >>> > seem to be working. >>> > >>> > Aaron >>> > >>> > >>> > On Tue, Jun 17, 2014 at 2:43 AM, Dibyendu Bhattacharya < >>> > [email protected]> wrote: >>> > >>> > > Hi, >>> > > >>> > > When I set "query.setRowQuery(false)"; then I do get the result in >>> > sorted >>> > > order.. . Sorry I did not check the Row Query to false yesterday... >>> > > >>> > > As I see the documents, I think right now sorting is only supported >>> for >>> > > Record Query.. So we are fine now with setting the above boolean >>> flag. >>> > > >>> > > >>> > > >>> > > When Row Query is not set to false, then I got following exception.. >>> > > >>> > > BlurException(message:Query [Query(query:*, rowQuery:true, >>> > scoreType:SUPER, >>> > > rowFilter:null, recordFilter:null)] in BlurQuery >>> > > [BlurQuery(query:Query(query:*, rowQuery:true, scoreType:SUPER, >>> > > rowFilter:null, recordFilter:null), facets:null, >>> > > selector:Selector(recordOnly:true, locationId:null, rowId:null, >>> > > recordId:null, columnFamiliesToFetch:[revel], columnsToFetch:null, >>> > > startRecord:0, maxRecordsToFetch:1000, highlightOptions:null, >>> > > orderOfFamiliesToFetch:null), useCacheIfPresent:true, start:0, >>> fetch:100, >>> > > minimumNumberOfResults:9223372036854775807, >>> > > maxQueryTime:9223372036854775807, uuid:null, userContext:null, >>> > > cacheResult:true, startTime:0, sortFields:[SortField(family:revel, >>> > > column:timestamp, reverse:true)], rowId:null)] cannot be a rowquery >>> when >>> > > sortfields are supplied., stackTraceStr:null, errorType:UNKNOWN) >>> > > at >>> > > >>> > > >>> > >>> org.apache.blur.thrift.generated.Blur$query_result$query_resultStandardScheme.read(Blur.java:17790) >>> > > at >>> > > >>> > > >>> > >>> org.apache.blur.thrift.generated.Blur$query_result$query_resultStandardScheme.read(Blur.java:1) >>> > > at >>> > > >>> org.apache.blur.thrift.generated.Blur$query_result.read(Blur.java:17706) >>> > > at >>> > > >>> > > >>> > >>> org.apache.blur.thirdparty.thrift_0_9_0.TServiceClient.receiveBase(TServiceClient.java:78) >>> > > at >>> > > >>> org.apache.blur.thrift.generated.Blur$Client.recv_query(Blur.java:959) >>> > > at >>> > > >>> > > >>> > >>> org.apache.blur.thrift.generated.SafeClientGen.recv_query(SafeClientGen.java:403) >>> > > at >>> > > org.apache.blur.thrift.generated.Blur$Client.query(Blur.java:945) >>> > > at >>> > > >>> > > >>> > >>> org.apache.blur.thrift.generated.SafeClientGen.query(SafeClientGen.java:221) >>> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>> Method) >>> > > at >>> > > >>> > > >>> > >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>> > > at >>> > > >>> > > >>> > >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>> > > at java.lang.reflect.Method.invoke(Method.java:606) >>> > > at >>> > > >>> > > >>> > >>> org.apache.blur.thrift.BlurClient$BlurClientInvocationHandler$1.call(BlurClient.java:60) >>> > > at >>> > > >>> > > >>> > >>> org.apache.blur.thrift.BlurClient$BlurClientInvocationHandler$1.call(BlurClient.java:1) >>> > > at >>> > > org.apache.blur.thrift.AbstractCommand.call(AbstractCommand.java:62) >>> > > at >>> > > >>> > > >>> > >>> org.apache.blur.thrift.BlurClientManager.execute(BlurClientManager.java:192) >>> > > at >>> > > >>> > > >>> > >>> org.apache.blur.thrift.BlurClient$BlurClientInvocationHandler.invoke(BlurClient.java:56) >>> > > at com.sun.proxy.$Proxy0.query(Unknown Source) >>> > > at >>> > > >>> > >>> com.pearson.blur.client.indexer.BlurQueryTest.main(BlurQueryTest.java:107) >>> > > >>> > > >>> > > >>> > > >>> > > >>> > > On Mon, Jun 16, 2014 at 10:30 PM, Aaron McCurry <[email protected]> >>> > > wrote: >>> > > >>> > > > Ok that sounds like a bug. Thanks for letting us know, I will >>> take a >>> > > look >>> > > > this afternoon and try to track it down for you. >>> > > > >>> > > > Thanks! >>> > > > >>> > > > Aaron >>> > > > >>> > > > >>> > > > On Mon, Jun 16, 2014 at 12:58 PM, Dibyendu Bhattacharya < >>> > > > [email protected]> wrote: >>> > > > >>> > > > > Yes, I get all records matched the search if I comment the >>> sorting , >>> > > i.e. >>> > > > > if I comment below line, I got the results. >>> > > > > >>> > > > > blurQuery.addToSortFields(new SortField("family", "timestamp", >>> > true)); >>> > > > > >>> > > > > >>> > > > > >>> > > > > >>> > > > > On Mon, Jun 16, 2014 at 10:02 PM, Aaron McCurry < >>> [email protected]> >>> > > > > wrote: >>> > > > > >>> > > > > > On Mon, Jun 16, 2014 at 12:00 PM, Dibyendu Bhattacharya < >>> > > > > > [email protected]> wrote: >>> > > > > > >>> > > > > > > I got 0 results. It was Record query. >>> > > > > > > >>> > > > > > >>> > > > > > And if you run the same query without any of the sort feature >>> > turned >>> > > on >>> > > > > do >>> > > > > > you get a different result? >>> > > > > > >>> > > > > > >>> > > > > > > >>> > > > > > > Dib >>> > > > > > > On Jun 16, 2014 9:08 PM, "Aaron McCurry" <[email protected] >>> > >>> > > wrote: >>> > > > > > > >>> > > > > > > > On Mon, Jun 16, 2014 at 10:19 AM, Dibyendu Bhattacharya < >>> > > > > > > > [email protected]> wrote: >>> > > > > > > > >>> > > > > > > > > Hi Aaron, >>> > > > > > > > > >>> > > > > > > > > I wanted to implement sorting of records during search, >>> but >>> > it >>> > > > > seems >>> > > > > > > > > sorting feature not working. >>> > > > > > > > > >>> > > > > > > > > This is what I tried. >>> > > > > > > > > >>> > > > > > > > > I defined a Column Definition as long type and set the >>> > > sortable >>> > > > as >>> > > > > > > true >>> > > > > > > > > during table creation, and populate the long field with >>> > > timestamp >>> > > > > > value >>> > > > > > > > > during indexing. >>> > > > > > > > > >>> > > > > > > > > During query I used ( timestamp is the column name that >>> is >>> > > > > sortable) >>> > > > > > > > > >>> > > > > > > > > Query query = new Query(); >>> > > > > > > > > query.setQuery(queryString); >>> > > > > > > > > BlurQuery blurQuery = new BlurQuery(); >>> > > > > > > > > blurQuery.setQuery(query); >>> > > > > > > > > blurQuery.setStart(pageSize); >>> > > > > > > > > blurQuery.setFetch(fetchSize); >>> > > > > > > > > blurQuery.addToSortFields(new SortField("family", >>> > "timestamp", >>> > > > > > true)); >>> > > > > > > > > Selector selector = new Selector(); >>> > > > > > > > > selector.setRecordOnly(true); >>> > > > > > > > > selector.addToColumnFamiliesToFetch("family"); >>> > > > > > > > > blurQuery.setSelector(selector); >>> > > > > > > > > >>> > > > > > > > > results = client.query("table", blurQuery); >>> > > > > > > > > >>> > > > > > > > > >>> > > > > > > > > But this does not return any result. >>> > > > > > > > > >>> > > > > > > > >>> > > > > > > > What is the result? An error? Or 0 results? >>> > > > > > > > >>> > > > > > > > Also there can be some confusion about Record and Row query >>> > > results >>> > > > > > > because >>> > > > > > > > they are stored in two different fields. >>> > > > > > > > >>> > > > > > > > >>> > > > > > >>> > > > >>> > >>> http://incubator.apache.org/blur/docs/0.2.2/Blur.html#Struct_FetchResult >>> > > > > > > > >>> > > > > > > > Let me know if there is anything else I can help with. I >>> will >>> > > > rerun >>> > > > > > some >>> > > > > > > > tests later today to make sure that the feature does in >>> fact >>> > > work. >>> > > > > > > > >>> > > > > > > > Aaron >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > > >>> > > > > > > > > My schema is very simple, we have one record for every >>> row >>> > and >>> > > > > every >>> > > > > > > > > record have around 5 columns. >>> > > > > > > > > >>> > > > > > > > > Can you please let me know if I am missing anything. >>> > > > > > > > > >>> > > > > > > > > Regards, >>> > > > > > > > > Dibyendu >>> > > > > > > > > >>> > > > > > > > > >>> > > > > > > > > >>> > > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> >> >> >
