Return-Path: X-Original-To: apmail-geode-commits-archive@minotaur.apache.org Delivered-To: apmail-geode-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id ED8C11828A for ; Wed, 23 Sep 2015 22:53:54 +0000 (UTC) Received: (qmail 14988 invoked by uid 500); 23 Sep 2015 22:53:54 -0000 Delivered-To: apmail-geode-commits-archive@geode.apache.org Received: (qmail 14959 invoked by uid 500); 23 Sep 2015 22:53:54 -0000 Mailing-List: contact commits-help@geode.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.incubator.apache.org Delivered-To: mailing list commits@geode.incubator.apache.org Received: (qmail 14950 invoked by uid 99); 23 Sep 2015 22:53:54 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Sep 2015 22:53:54 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 68CFF188417 for ; Wed, 23 Sep 2015 22:53:54 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.774 X-Spam-Level: * X-Spam-Status: No, score=1.774 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.006] autolearn=disabled Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id t0jD-uP0pL84 for ; Wed, 23 Sep 2015 22:53:50 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with SMTP id 4A66020F60 for ; Wed, 23 Sep 2015 22:53:50 +0000 (UTC) Received: (qmail 14131 invoked by uid 99); 23 Sep 2015 22:53:50 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Sep 2015 22:53:50 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id EC116DFE1D; Wed, 23 Sep 2015 22:53:49 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: upthewaterspout@apache.org To: commits@geode.incubator.apache.org Message-Id: <9573fd711b934d6b8ce064ec7e19f6ea@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: incubator-geode git commit: Implementing LuceneQueryImpl.search Date: Wed, 23 Sep 2015 22:53:49 +0000 (UTC) Repository: incubator-geode Updated Branches: refs/heads/feature/GEODE-11 8fb4ad7a2 -> 3e743df86 Implementing LuceneQueryImpl.search Implementing search by invoking the LuceneFunction from within LuceneQueryImpl.search and building a result set. Adding unit tests for the same. Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/3e743df8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/3e743df8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/3e743df8 Branch: refs/heads/feature/GEODE-11 Commit: 3e743df86ce7487fd1cf094734ca8a5bbe7895cb Parents: 8fb4ad7 Author: Dan Smith Authored: Wed Sep 23 15:28:19 2015 -0700 Committer: Dan Smith Committed: Wed Sep 23 15:53:09 2015 -0700 ---------------------------------------------------------------------- .../gemfire/cache/lucene/LuceneQuery.java | 4 +- .../cache/lucene/LuceneQueryFactory.java | 8 +- .../lucene/internal/LuceneQueryFactoryImpl.java | 39 ++++----- .../cache/lucene/internal/LuceneQueryImpl.java | 42 +++++++--- .../lucene/internal/LuceneServiceImpl.java | 2 +- .../LuceneQueryFactoryImplJUnitTest.java | 32 ++++++++ .../internal/LuceneQueryImplJUnitTest.java | 84 ++++++++++++++++++++ .../LuceneFunctionReadPathDUnitTest.java | 34 +++----- 8 files changed, 177 insertions(+), 68 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e743df8/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQuery.java ---------------------------------------------------------------------- diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQuery.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQuery.java index 548bb00..09d3a07 100644 --- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQuery.java +++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQuery.java @@ -6,11 +6,11 @@ package com.gemstone.gemfire.cache.lucene; * {@link LuceneQueryFactory#create}. * */ -public interface LuceneQuery { +public interface LuceneQuery { /** * Execute the search and get results. */ - public LuceneQueryResults search(); + public LuceneQueryResults search(); /** * Get page size setting of current query. http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e743df8/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQueryFactory.java ---------------------------------------------------------------------- diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQueryFactory.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQueryFactory.java index 55f1b3a..b5598ad 100644 --- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQueryFactory.java +++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/LuceneQueryFactory.java @@ -56,10 +56,12 @@ public interface LuceneQueryFactory { * @param regionName region name * @param indexName index name * @param queryString query string in lucene QueryParser's syntax + * @param K the key type in the query results + * @param V the value type in the query results * @return LuceneQuery object * @throws ParseException */ - public LuceneQuery create(String indexName, String regionName, String queryString) + public LuceneQuery create(String indexName, String regionName, String queryString) throws ParseException; /** @@ -70,7 +72,9 @@ public interface LuceneQueryFactory { * @param indexName index name * @param regionName region name * @param provider constructs and provides a Lucene Query object + * @param K the key type in the query results + * @param V the value type in the query results * @return LuceneQuery object */ - public LuceneQuery create(String indexName, String regionName, LuceneQueryProvider provider); + public LuceneQuery create(String indexName, String regionName, LuceneQueryProvider provider); } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e743df8/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryFactoryImpl.java ---------------------------------------------------------------------- diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryFactoryImpl.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryFactoryImpl.java index 9210929..2a602a5 100644 --- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryFactoryImpl.java +++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryFactoryImpl.java @@ -3,13 +3,10 @@ package com.gemstone.gemfire.cache.lucene.internal; import java.util.HashSet; import java.util.Set; -import org.apache.lucene.analysis.Analyzer; -import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.queryparser.classic.ParseException; -import org.apache.lucene.queryparser.classic.QueryParser; -import org.apache.lucene.search.Query; -import com.gemstone.gemfire.cache.lucene.LuceneIndex; +import com.gemstone.gemfire.cache.Cache; +import com.gemstone.gemfire.cache.Region; import com.gemstone.gemfire.cache.lucene.LuceneQuery; import com.gemstone.gemfire.cache.lucene.LuceneQueryFactory; import com.gemstone.gemfire.cache.lucene.LuceneQueryProvider; @@ -17,13 +14,13 @@ import com.gemstone.gemfire.cache.lucene.LuceneQueryProvider; public class LuceneQueryFactoryImpl implements LuceneQueryFactory { private int limit = DEFAULT_LIMIT; private int pageSize = DEFAULT_PAGESIZE; - private Set projectionFields = new HashSet(); + private String[] projectionFields = null; + private Cache cache; + + LuceneQueryFactoryImpl(Cache cache) { + this.cache = cache; + } - /* reference to the index. One index could have multiple Queries, but one Query must belong - * to one index - */ - private LuceneIndex relatedIndex; - @Override public LuceneQueryFactory setPageSize(int pageSize) { this.pageSize = pageSize; @@ -37,28 +34,20 @@ public class LuceneQueryFactoryImpl implements LuceneQueryFactory { } @Override - public LuceneQuery create(String indexName, String regionName, - String queryString) throws ParseException { + public LuceneQuery create(String indexName, String regionName, + String queryString) { return create(indexName, regionName, new StringQueryProvider(queryString)); } - public LuceneQuery create(String indexName, String regionName, LuceneQueryProvider provider) { - LuceneQueryImpl luceneQuery = new LuceneQueryImpl(indexName, regionName, provider, projectionFields, limit, pageSize); + public LuceneQuery create(String indexName, String regionName, LuceneQueryProvider provider) { + Region region = cache.getRegion(regionName); + LuceneQueryImpl luceneQuery = new LuceneQueryImpl(indexName, region, provider, projectionFields, limit, pageSize); return luceneQuery; } - - public LuceneIndex getRelatedIndex() { - return this.relatedIndex; - } - @Override public LuceneQueryFactory setProjectionFields(String... fieldNames) { - if (fieldNames != null) { - for (String fieldName:fieldNames) { - this.projectionFields.add(fieldName); - } - } + projectionFields = fieldNames.clone(); return this; } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e743df8/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImpl.java ---------------------------------------------------------------------- diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImpl.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImpl.java index 714df95..a5cbc79 100644 --- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImpl.java +++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImpl.java @@ -2,29 +2,34 @@ package com.gemstone.gemfire.cache.lucene.internal; import java.util.Set; -import org.apache.lucene.search.Query; - +import com.gemstone.gemfire.cache.Region; +import com.gemstone.gemfire.cache.execute.FunctionService; +import com.gemstone.gemfire.cache.execute.ResultCollector; import com.gemstone.gemfire.cache.lucene.LuceneQuery; import com.gemstone.gemfire.cache.lucene.LuceneQueryFactory; import com.gemstone.gemfire.cache.lucene.LuceneQueryProvider; import com.gemstone.gemfire.cache.lucene.LuceneQueryResults; +import com.gemstone.gemfire.cache.lucene.internal.distributed.LuceneFunction; +import com.gemstone.gemfire.cache.lucene.internal.distributed.LuceneFunctionContext; +import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntries; +import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntriesCollector; +import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntriesCollectorManager; +import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntriesFunctionCollector; -public class LuceneQueryImpl implements LuceneQuery { +public class LuceneQueryImpl implements LuceneQuery { private int limit = LuceneQueryFactory.DEFAULT_LIMIT; private int pageSize = LuceneQueryFactory.DEFAULT_PAGESIZE; private String indexName; - private String regionName; - // The projected fields are local to a specific index per Query object. - private Set projectedFieldNames; - + private String[] projectedFieldNames; /* the lucene Query object to be wrapped here */ private LuceneQueryProvider query; + private Region region; - LuceneQueryImpl(String indexName, String regionName, LuceneQueryProvider provider, Set projectionFields, + public LuceneQueryImpl(String indexName, Region region, LuceneQueryProvider provider, String[] projectionFields, int limit, int pageSize) { this.indexName = indexName; - this.regionName = regionName; + this.region = region; this.limit = limit; this.pageSize = pageSize; this.projectedFieldNames = projectionFields; @@ -32,9 +37,20 @@ public class LuceneQueryImpl implements LuceneQuery { } @Override - public LuceneQueryResults search() { - // TODO Auto-generated method stub - return null; + public LuceneQueryResults search() { + LuceneFunctionContext context = new LuceneFunctionContext<>(query, indexName, + new TopEntriesCollectorManager()); + TopEntriesFunctionCollector collector = new TopEntriesFunctionCollector(); + + ResultCollector rc = (ResultCollector) FunctionService.onRegion(region) + .withArgs(context) + .withCollector(collector) + .execute(LuceneFunction.ID); + + //TODO provide a timeout to the user? + TopEntries entries = rc.getResult(); + + return new LuceneQueryResultsImpl(entries.getHits(), region, pageSize); } @Override @@ -49,7 +65,7 @@ public class LuceneQueryImpl implements LuceneQuery { @Override public String[] getProjectedFieldNames() { - return (String[])this.projectedFieldNames.toArray(); + return this.projectedFieldNames; } } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e743df8/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java ---------------------------------------------------------------------- diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java index cb6e5fc..b1631d1 100644 --- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java +++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java @@ -142,7 +142,7 @@ public class LuceneServiceImpl implements InternalLuceneService { @Override public LuceneQueryFactory createLuceneQueryFactory() { - return new LuceneQueryFactoryImpl(); + return new LuceneQueryFactoryImpl(cache); } @Override http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e743df8/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryFactoryImplJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryFactoryImplJUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryFactoryImplJUnitTest.java new file mode 100644 index 0000000..6cb5368 --- /dev/null +++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryFactoryImplJUnitTest.java @@ -0,0 +1,32 @@ +package com.gemstone.gemfire.cache.lucene.internal; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.mockito.Mockito; + +import com.gemstone.gemfire.cache.Cache; +import com.gemstone.gemfire.cache.lucene.LuceneQuery; +import com.gemstone.gemfire.test.junit.categories.UnitTest; + +@Category(UnitTest.class) +public class LuceneQueryFactoryImplJUnitTest { + + @Test + public void test() { + Cache cache = Mockito.mock(Cache.class); + LuceneQueryFactoryImpl f = new LuceneQueryFactoryImpl(cache); + f.setPageSize(5); + f.setResultLimit(25); + String[] projection = new String[] {"a", "b"}; + f.setProjectionFields(projection); + LuceneQuery query = f.create("index", "region", new StringQueryProvider("test")); + assertEquals(25, query.getLimit()); + assertEquals(5, query.getPageSize()); + assertArrayEquals(projection, query.getProjectedFieldNames()); + + Mockito.verify(cache).getRegion(Mockito.eq("region")); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e743df8/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImplJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImplJUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImplJUnitTest.java new file mode 100644 index 0000000..d3ffd19 --- /dev/null +++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImplJUnitTest.java @@ -0,0 +1,84 @@ +package com.gemstone.gemfire.cache.lucene.internal; + +import static org.junit.Assert.*; + +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.experimental.categories.Category; + +import com.gemstone.gemfire.cache.Cache; +import com.gemstone.gemfire.cache.CacheFactory; +import com.gemstone.gemfire.cache.Region; +import com.gemstone.gemfire.cache.RegionShortcut; +import com.gemstone.gemfire.cache.execute.FunctionAdapter; +import com.gemstone.gemfire.cache.execute.FunctionContext; +import com.gemstone.gemfire.cache.execute.FunctionService; +import com.gemstone.gemfire.cache.lucene.LuceneQueryResults; +import com.gemstone.gemfire.cache.lucene.internal.distributed.LuceneFunction; +import com.gemstone.gemfire.cache.lucene.internal.distributed.LuceneFunctionContext; +import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntriesCollector; +import com.gemstone.gemfire.test.junit.categories.IntegrationTest; + +@Category(IntegrationTest.class) +public class LuceneQueryImplJUnitTest { + + private Cache cache; + private Region region; + @Before + public void createCache() { + cache = new CacheFactory().set("mcast-port", "0").create(); + region = cache.createRegionFactory(RegionShortcut.REPLICATE).create("region"); + } + + @After + public void removeCache() { + FunctionService.unregisterFunction(LuceneFunction.ID); + cache.close(); + } + @Test + public void test() { + //Register a fake function to observe the function invocation + FunctionService.unregisterFunction(LuceneFunction.ID); + TestLuceneFunction function = new TestLuceneFunction(); + FunctionService.registerFunction(function); + + + StringQueryProvider provider = new StringQueryProvider(); + LuceneQueryImpl query = new LuceneQueryImpl("index", region, provider, null, 100, 20); + LuceneQueryResults results = query.search(); + List nextPage = results.getNextPage(); + assertEquals(3, nextPage.size()); + assertEquals(.3f, results.getMaxScore(), 0.01); + assertTrue(function.wasInvoked); + + LuceneFunctionContext args = (LuceneFunctionContext) function.args; + assertEquals(provider.getQueryString(), ((StringQueryProvider) args.getQueryProvider()).getQueryString()); + assertEquals("index", args.getIndexName()); + assertEquals(100, args.getLimit()); + } + + private static class TestLuceneFunction extends FunctionAdapter { + + private boolean wasInvoked; + private Object args; + + @Override + public void execute(FunctionContext context) { + this.args = context.getArguments(); + wasInvoked = true; + TopEntriesCollector lastResult = new TopEntriesCollector(); + lastResult.collect(3, .3f); + lastResult.collect(2, .2f); + lastResult.collect(1, .1f); + context.getResultSender().lastResult(lastResult); + } + + @Override + public String getId() { + return LuceneFunction.ID; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3e743df8/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionReadPathDUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionReadPathDUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionReadPathDUnitTest.java index 939790d..3448725 100644 --- a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionReadPathDUnitTest.java +++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionReadPathDUnitTest.java @@ -1,7 +1,6 @@ package com.gemstone.gemfire.cache.lucene.internal.distributed; import java.io.Serializable; -import java.util.concurrent.TimeUnit; import org.junit.Assert; import org.junit.experimental.categories.Category; @@ -10,14 +9,11 @@ import com.gemstone.gemfire.cache.Cache; import com.gemstone.gemfire.cache.Region; import com.gemstone.gemfire.cache.RegionFactory; import com.gemstone.gemfire.cache.RegionShortcut; -import com.gemstone.gemfire.cache.execute.FunctionService; -import com.gemstone.gemfire.cache.execute.ResultCollector; -import com.gemstone.gemfire.cache.lucene.LuceneIndex; -import com.gemstone.gemfire.cache.lucene.LuceneQueryProvider; +import com.gemstone.gemfire.cache.lucene.LuceneQuery; +import com.gemstone.gemfire.cache.lucene.LuceneQueryResults; import com.gemstone.gemfire.cache.lucene.LuceneService; import com.gemstone.gemfire.cache.lucene.LuceneServiceProvider; import com.gemstone.gemfire.cache.lucene.internal.InternalLuceneIndex; -import com.gemstone.gemfire.cache.lucene.internal.StringQueryProvider; import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository; import com.gemstone.gemfire.cache30.CacheTestCase; import com.gemstone.gemfire.internal.cache.BucketNotFoundException; @@ -25,7 +21,6 @@ import com.gemstone.gemfire.test.junit.categories.DistributedTest; import dunit.Host; import dunit.SerializableCallable; -import dunit.SerializableRunnable; import dunit.VM; @Category(DistributedTest.class) @@ -87,32 +82,21 @@ public class LuceneFunctionReadPathDUnitTest extends CacheTestCase { server1.invoke(createPartitionRegion); server2.invoke(createPartitionRegion); - SerializableRunnable executeSearch = new SerializableRunnable("executeSearch") { + SerializableCallable executeSearch = new SerializableCallable("executeSearch") { private static final long serialVersionUID = 1L; - public void run() { + public Object call() throws Exception { Cache cache = getCache(); assertNotNull(cache); Region region = cache.getRegion(REGION_NAME); Assert.assertNotNull(region); LuceneService service = LuceneServiceProvider.get(cache); - LuceneIndex index = service.getIndex(INDEX_NAME, REGION_NAME); - LuceneQueryProvider provider = new StringQueryProvider("text:world"); - - LuceneFunctionContext context = new LuceneFunctionContext<>(provider, index.getName(), - new TopEntriesCollectorManager()); - TopEntriesFunctionCollector collector = new TopEntriesFunctionCollector(); - - ResultCollector rc = (ResultCollector) FunctionService.onRegion(region).withArgs(context).withCollector(collector).execute(LuceneFunction.ID); - TopEntries entries; - try { - entries = rc.getResult(30, TimeUnit.SECONDS); - assertNotNull(entries); - assertEquals(2, entries.getHits().size()); - } catch (Exception e) { - fail("failed", e); - } + LuceneQuery query = service.createLuceneQueryFactory().create(INDEX_NAME, REGION_NAME, "text:world"); + LuceneQueryResults results = query.search(); + assertEquals(2, results.size()); + + return null; } };