r1246 - in trunk: wikitty-api/src/test/java/org/nuiton/wikitty/api wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr
Author: sletellier Date: 2011-10-27 16:28:09 +0200 (Thu, 27 Oct 2011) New Revision: 1246 Url: http://nuiton.org/repositories/revision/wikitty/1246 Log: - Fix imports - Fix pageResult size for pagined select search - Add test for pagined select search Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-27 10:45:55 UTC (rev 1245) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-27 14:28:09 UTC (rev 1246) @@ -1136,68 +1136,6 @@ assertPagedResultSizeEquals(0, results); } - @Test - public void testSelect() throws Exception { - - // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming - assumeNotYetImplementedInMemory(); - - //Test with an associated search that returns nothing - Search query = Search.query().bw("Product.price", "15", "25") - .sw("Product.name", "Paint"); - - Criteria selectCriteria = query.criteria(); - - selectCriteria.setSelect("Product.category"); - - PagedResult<Wikitty> results = proxy.findAllByCriteria(selectCriteria); - - assertPagedResultSizeEquals(2, results); - - //Test with an associated search that returns nothing - query = Search.query().bw("Product.price", "15", "25") - .sw("Product.name", "Paint"); - - selectCriteria = query.criteria(); - - selectCriteria.setSelect("Product.name"); - - results = proxy.findAllByCriteria(selectCriteria); - - assertPagedResultSizeEquals(0, results); - } - - @Test - public void testEntitiesSelect() throws Exception { - - // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming - assumeNotYetImplementedInMemory(); - - //Test with an associated search that returns nothing - Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25") - .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint"); - - Criteria selectCriteria = query.criteria(); - - selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY); - - PagedResult<CategoryEntity> results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); - - assertPagedResultSizeEquals(2, results); - - //Test with an associated search that returns nothing - query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25") - .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint"); - - selectCriteria = query.criteria(); - - selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME); - - results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); - - assertPagedResultSizeEquals(0, results); - } - /** * <li> monext.monfield * <li> *.monfield @@ -1512,17 +1450,160 @@ } @Test + public void testSelect() throws Exception { + + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + + Search query = Search.query().bw("Product.price", "15", "25") + .sw("Product.name", "Paint"); + Criteria selectCriteria = query.criteria(); + selectCriteria.setSelect("Product.category"); + + PagedResult<Wikitty> results = proxy.findAllByCriteria(selectCriteria); + assertPagedResultSizeEquals(2, results); + + //Test with an associated search that returns nothing + query = Search.query().bw("Product.price", "15", "25") + .sw("Product.name", "Paint"); + selectCriteria = query.criteria(); + selectCriteria.setSelect("Product.name"); + + results = proxy.findAllByCriteria(selectCriteria); + assertPagedResultSizeEquals(0, results); + } + + @Test + public void testEntitiesSelect() throws Exception { + + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + + Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25") + .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint"); + Criteria selectCriteria = query.criteria(); + selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY); + + PagedResult<CategoryEntity> results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); + assertPagedResultSizeEquals(2, results); + + //Test with an associated search that returns nothing + query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25") + .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint"); + selectCriteria = query.criteria(); + selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME); + + results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); + assertPagedResultSizeEquals(0, results); + } + +// TODO sletellier 20111027 : try with more data + @Test + public void testPaginedSelect() throws Exception { + + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + + Search query = Search.query().exteq(EXT_PRODUCT); + Criteria selectCriteria = query.criteria(); + selectCriteria.setSelect("Product.category"); + selectCriteria.setFirstIndex(1); + selectCriteria.setEndIndex(1); + + PagedResult<Wikitty> results = proxy.findAllByCriteria(selectCriteria); + assertPaginedPagedResultSizeEquals(1, 2, results); + + query = Search.query().exteq(EXT_PRODUCT); + selectCriteria = query.criteria(); + selectCriteria.setSelect("Product.category"); + selectCriteria.setFirstIndex(0); + // No limit + selectCriteria.setEndIndex(-1); + + results = proxy.findAllByCriteria(selectCriteria); + assertPaginedPagedResultSizeEquals(2, 2, results); + + query = Search.query().exteq(EXT_PRODUCT); + selectCriteria = query.criteria(); + selectCriteria.setSelect("Product.category"); + selectCriteria.setFirstIndex(0); + selectCriteria.setEndIndex(0); + + results = proxy.findAllByCriteria(selectCriteria); + assertPaginedPagedResultSizeEquals(1, 2, results); + + query = Search.query().exteq(EXT_PRODUCT); + selectCriteria = query.criteria(); + selectCriteria.setSelect("Product.category"); + selectCriteria.setFirstIndex(0); + selectCriteria.setEndIndex(1); + + results = proxy.findAllByCriteria(selectCriteria); + assertPaginedPagedResultSizeEquals(2, 2, results); + } + +// TODO sletellier 20111027 : try with more data + @Test + public void testPaginedEntitiesSelect() throws Exception { + + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + + Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY); + Criteria selectCriteria = query.criteria(); + selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY); + selectCriteria.setFirstIndex(1); + selectCriteria.setEndIndex(1); + + PagedResult<CategoryEntity> results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); + assertPaginedPagedResultSizeEquals(1, 2, results); + + query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY); + selectCriteria = query.criteria(); + selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY); + selectCriteria.setFirstIndex(0); + // No limit + selectCriteria.setEndIndex(-1); + + results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); + assertPaginedPagedResultSizeEquals(2, 2, results); + + query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY); + selectCriteria = query.criteria(); + selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY); + selectCriteria.setFirstIndex(0); + selectCriteria.setEndIndex(0); + + results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); + assertPaginedPagedResultSizeEquals(1, 2, results); + + query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY); + selectCriteria = query.criteria(); + selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY); + selectCriteria.setFirstIndex(0); + selectCriteria.setEndIndex(1); + + results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); + assertPaginedPagedResultSizeEquals(2, 2, results); + } + + @Test public void testComplexQueries() throws Exception { //TODO JC-07-04-2011 Write test } // Dont use this method if criteria use pagination protected void assertPagedResultSizeEquals(int expected, PagedResult result) { - Assert.assertEquals(expected, result.getAll().size()); Assert.assertEquals(expected, result.size()); Assert.assertEquals(expected, result.getNumFound()); } + // Dont use this method if criteria use pagination + protected void assertPaginedPagedResultSizeEquals(int expected, int expectedNumFound, PagedResult result) { + Assert.assertEquals(expected, result.size()); + Assert.assertEquals(expectedNumFound, result.getNumFound()); + } + //TODO JC-07-04-2011 Write test on sortBy, facets, and with other types (date,...) public abstract WikittyService getWikittyService(); Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java =================================================================== --- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-27 10:45:55 UTC (rev 1245) +++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-27 14:28:09 UTC (rev 1246) @@ -695,7 +695,7 @@ criteria.addFacetField(selectWikitty); // We need no result, just facet - criteria.setEndIndex(0); + criteria.setEndIndex(firstIndex); } // Add faceting @@ -774,14 +774,20 @@ // Remove this one facets.remove(select); - // Get total num founds + // Total found numFound = facetTopics.size(); - // Extract ids - ids = new ArrayList<String>(facetTopics.size()); - for (FacetTopic topic : facetTopics) { + // Extract ids starting on firstIndex + ids = new ArrayList<String>(); + + // If all must be return, use nbRows + endIndex = (endIndex == -1 ? nbRows : endIndex); + for (int i = firstIndex;i <= endIndex && i < numFound;i++) { + + FacetTopic topic = facetTopics.get(i); ids.add(topic.getTopicName()); } + } else { // Extract ids
participants (1)
-
sletellier@users.nuiton.org