Great, glad to hear it! -Dan
On Tue, Apr 7, 2020 at 10:01 AM vas aj <vasudevan.a...@gmail.com> wrote: > Hi Dan, > > Thanks for the reply. > I moved the Lucene query logic to Geode Function and now the query is > working as expected. > > Regards, > Aj > > On Tue, Apr 7, 2020 at 12:52 AM Dan Smith <dsm...@pivotal.io> wrote: > >> Your custom query code does need to be on the server in order for this to >> work. Specifically, this lambda is your LuceneQueryProvider, which needs to >> be serializable in some way (Serializable, DataSerializable, etc.) and the >> code need to be on the server: >> index -> { >> return IntPoint.newRangeQuery("age", 25, 35); >> } >> >> >> In your case, the lambda is capturing the surrounding class, >> CustomerServiceImplTest, which is why you are getting an error about >> CustomerServiceImplTest not being serializable. >> >> -Dan >> >> On Mon, Apr 6, 2020 at 2:16 PM vas aj <vasudevan.a...@gmail.com> wrote: >> >>> Hi team, >>> >>> Do I need to write & deploy a custom Geode Function in order to run the >>> dynamic Lucene query? >>> Can I get some help, please? >>> >>> I need to somehow execute a dynamic lucene query on Geode cluster. >>> I am able to run successfully a static lucene query using the >>> standard Lucene's StandardQueryParser, though. >>> >>> Regards, >>> Ajay Vasudevan >>> >>> On Sun, Apr 5, 2020 at 5:29 PM vas aj <vasudevan.a...@gmail.com> wrote: >>> >>>> ++ Dev team >>>> >>>> Hi team, >>>> >>>> I am trying to execute Lucene query from Geode cache-client with the >>>> following : >>>> >>>> class CustomerServiceImplTest { >>>>> @Inject CustomerServiceGemfireConfiguration >>>>> customerServiceGemfireConfiguration; >>>>> @Test >>>>> void getAllInterestedCustomers() throws Exception { >>>>> LuceneService luceneService = >>>>> CustomerServiceGemfireConfiguration.getLuceneService(); >>>>> String title = "John"; >>>>> LuceneQuery<Long, Customer> luceneQuery = >>>>> luceneService >>>>> .createLuceneQueryFactory() >>>>> .setLimit(50) >>>>> .create( >>>>> "customerLuceneIndex", >>>>> "customers", >>>>> index -> { >>>>> return IntPoint.newRangeQuery("age", 25, 35); >>>>> }); >>>>> Collection<Customer> allInterestedCustomers = >>>>> luceneQuery.findValues(); >>>>> System.out.println("all Customers => " + allInterestedCustomers); >>>>> } >>>>> } >>>> >>>> >>>> I get the below error at luceneQuery.findValues() while executing it. >>>> Can someone help me? >>>> >>>> org.apache.geode.cache.client.ServerOperationException: remote server >>>>> on 192.168.0.3(24550:loner):38432:0d2d154b: While performing a remote >>>>> executeRegionFunction >>>>> at >>>>> org.apache.geode.cache.client.internal.ExecuteRegionFunctionOp$ExecuteRegionFunctionOpImpl.processResponse(ExecuteRegionFunctionOp.java:437) >>>>> at >>>>> org.apache.geode.cache.client.internal.AbstractOp.processResponse(AbstractOp.java:222) >>>>> at >>>>> org.apache.geode.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:195) >>>>> at >>>>> org.apache.geode.cache.client.internal.AbstractOp.attempt(AbstractOp.java:382) >>>>> at >>>>> org.apache.geode.cache.client.internal.AbstractOpWithTimeout.attempt(AbstractOpWithTimeout.java:45) >>>>> at >>>>> org.apache.geode.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:263) >>>>> at >>>>> org.apache.geode.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:353) >>>>> at >>>>> org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:750) >>>>> at >>>>> org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:138) >>>>> at >>>>> org.apache.geode.cache.client.internal.PoolImpl.execute(PoolImpl.java:787) >>>>> at >>>>> org.apache.geode.cache.client.internal.ExecuteRegionFunctionOp.execute(ExecuteRegionFunctionOp.java:90) >>>>> at >>>>> org.apache.geode.cache.client.internal.ServerRegionProxy.executeFunction(ServerRegionProxy.java:687) >>>>> at >>>>> org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.executeOnServer(ServerRegionFunctionExecutor.java:206) >>>>> at >>>>> org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.executeFunction(ServerRegionFunctionExecutor.java:158) >>>>> at >>>>> org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.execute(ServerRegionFunctionExecutor.java:390) >>>>> at >>>>> org.apache.geode.internal.cache.execute.ServerRegionFunctionExecutor.execute(ServerRegionFunctionExecutor.java:351) >>>>> at >>>>> org.apache.geode.cache.lucene.internal.LuceneQueryImpl.findTopEntries(LuceneQueryImpl.java:121) >>>>> at >>>>> org.apache.geode.cache.lucene.internal.LuceneQueryImpl.findPages(LuceneQueryImpl.java:99) >>>>> at >>>>> org.apache.geode.cache.lucene.internal.LuceneQueryImpl.findResults(LuceneQueryImpl.java:85) >>>>> at >>>>> org.apache.geode.cache.lucene.internal.LuceneQueryImpl.findValues(LuceneQueryImpl.java:78) >>>>> at >>>>> CustomerServiceImplTest.getAllInterestedCustomers(CustomerServiceImplTest.java:35) >>>>> >>>>> *Caused by: java.lang.ClassNotFoundException: **CustomerServiceImplTest >>>>> <<<< Why should the test class be loaded in Geode server ?* >>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:382) >>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) >>>>> ... >>>>> ... >>>>> >>>> >>>> Regards >>>> Aj Vas >>>> >>>