public ProductProjectionFacetSearchModel facet() { return new ProductProjectionFacetSearchModel(null, null); }
@Test public void onNumberRangedAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofNumber(ATTR_NAME_NUMBER).onlyGreaterThanOrEqualTo(valueOf(0)), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("0.0"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("5.0"); assertThat(rangeStats.getMax()).isEqualTo("10.0"); assertThat(rangeStats.getSum()).isEqualTo("15.0"); assertThat(rangeStats.getMean()).isEqualTo(7.50D); }); }
@Test public void searchForReviewsWithAverageRatingGreaterThan2() { final List<FacetRange<BigDecimal>> facetRanges = IntStream.range(LOWEST_RATING, HIGHEST_RATING) .mapToObj(i -> FacetRange.of(new BigDecimal(i), new BigDecimal(i + 1))) .collect(toList()); assertThat(facetRanges.toString()).isEqualTo("[[0 to 1), [1 to 2), [2 to 3), [3 to 4), [4 to 5)]"); final ProductProjectionSearch searchRequest = ProductProjectionSearch.ofStaged()//in prod it would be current .withResultFilters(m -> m.reviewRatingStatistics().averageRating().isGreaterThanOrEqualTo(new BigDecimal(2))) .withFacets(m -> m.reviewRatingStatistics().averageRating().onlyRange(facetRanges)) .withSort(m -> m.reviewRatingStatistics().averageRating().desc()); assertEventually(Duration.ofSeconds(60), Duration.ofMillis(100), () -> { final PagedSearchResult<ProductProjection> result = client().executeBlocking(searchRequest); assertThat(result.getResults()).hasSize(2); final ProductProjection productProjection = result.getResults().get(0); assertThat(productProjection.getReviewRatingStatistics().getCount()).isEqualTo(REVIEWS_PER_PRODUCT); final RangeFacetResult facetResult = (RangeFacetResult) result.getFacetResult("reviewRatingStatistics.averageRating"); assertThat(facetResult.getRanges().get(2)).isEqualTo(RangeStats.of("2.0", "3.0", 2L, null, "2.2", "2.7", "4.9", 2.45)); }); }
@Test public void facet() { final List<String> categoryIds1 = getCategoryIds("A", "B-1", "C-2-2"); final List<String> categoryIds2 = getCategoryIds("A", "B-2-3"); final List<String> categoryIds3 = getCategoryIds("B", "C"); withProductInCategories(client(), categoryIds1, (Product product1) -> { withProductInCategories(client(), categoryIds2, (Product product2) -> { withProductInCategories(client(), categoryIds3, (Product product3) -> { assertEventually(() -> { final ProductProjectionSearch request = ProductProjectionSearch.ofStaged() .plusFacets(m -> m.categories().id().withAlias("productsInA").onlyTermSubtree(getCategoryIds("A"))) .plusFacets(m -> m.categories().id().withAlias("productsInB").onlyTermSubtree(getCategoryIds("B"))) .plusFacets(m -> m.categories().id().withAlias("productsInAorB").onlyTermSubtree(getCategoryIds("A", "B"))) .plusFacets(m -> m.categories().id().withAlias("productsInC2").onlyTermSubtree(getCategoryIds("C-2"))) .plusQueryFilters(m -> m.id().isIn(asList(product1.getId(), product2.getId(), product3.getId()))); final PagedSearchResult<ProductProjection> pagedSearchResult = client().executeBlocking(request); assertThat(pagedSearchResult.getFilteredFacetResult("productsInA").getCount()).isEqualTo(2); assertThat(pagedSearchResult.getFilteredFacetResult("productsInB").getCount()).isEqualTo(3); assertThat(pagedSearchResult.getFilteredFacetResult("productsInAorB").getCount()).isEqualTo(3); assertThat(pagedSearchResult.getFilteredFacetResult("productsInC2").getCount()).isEqualTo(1); }); }); }); }); }
@Test public void onNumberRangedSetAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofNumberSet(ATTR_NAME_NUMBER_SET).onlyGreaterThanOrEqualTo(valueOf(0)), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("0.0"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("5.0"); assertThat(rangeStats.getMax()).isEqualTo("10.0"); assertThat(rangeStats.getSum()).isEqualTo("20.0"); assertThat(rangeStats.getMean()).isEqualTo(6.666666666666667D); }); }
@Test public void searchByCount() { final ProductProjectionSearch projectionSearch = ProductProjectionSearch.ofStaged()//in prod it would be current .withResultFilters(m -> m.reviewRatingStatistics().count().isGreaterThanOrEqualTo(new BigDecimal(2))) .plusResultFilters(m -> m.reviewRatingStatistics().highestRating().isGreaterThanOrEqualTo(new BigDecimal(2))) .plusResultFilters(m -> m.reviewRatingStatistics().lowestRating().isGreaterThanOrEqualTo(new BigDecimal(0))) .plusFacets(m -> m.reviewRatingStatistics().count().allRanges()) .plusFacets(m -> m.reviewRatingStatistics().highestRating().allRanges()) .plusFacets(m -> m.reviewRatingStatistics().lowestRating().allRanges()) ; assertEventually(Duration.ofSeconds(60), Duration.ofMillis(100), () -> { softAssert(soft -> { final PagedSearchResult<ProductProjection> res = client().executeBlocking(projectionSearch); soft.assertThat(res.getCount()).isGreaterThanOrEqualTo(3); final RangeFacetResult countFacets = (RangeFacetResult) res.getFacetResult("reviewRatingStatistics.count"); soft.assertThat(countFacets.getRanges().get(1).getSum()).as("count facets").isEqualTo("60.0"); final RangeFacetResult lowestRatingFacets = (RangeFacetResult) res.getFacetResult("reviewRatingStatistics.lowestRating"); soft.assertThat(lowestRatingFacets.getRanges().get(1).getSum()).as("lowestRating facets").isEqualTo("0.0"); final RangeFacetResult highestRatingFacets = (RangeFacetResult) res.getFacetResult("reviewRatingStatistics.highestRating"); soft.assertThat(highestRatingFacets.getRanges().get(1).getSum()).as("highestRating facets").isEqualTo("14.0"); }); }); }
@Test public void onTimeRangedSetAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofTimeSet(ATTR_NAME_TIME_SET).onlyGreaterThanOrEqualTo(TIME_22H), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("7.9509203E7"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("7.9509203E7"); assertThat(rangeStats.getMax()).isEqualTo("8.3170204E7"); assertThat(rangeStats.getSum()).isEqualTo("2.4218861E8"); assertThat(rangeStats.getMean()).isEqualTo(8.072953666666667E7D); }); }
public ProductProjectionFacetSearchModel facet() { return new ProductProjectionFacetSearchModel(null, null); }
@Test public void onDatetimeRangedSetAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofDateTimeSet(ATTR_NAME_DATE_TIME_SET).onlyGreaterThanOrEqualTo(DATE_TIME_2001_22H), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("1.000245909203E12"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("1.000245909203E12"); assertThat(rangeStats.getMax()).isEqualTo("1.034463970204E12"); assertThat(rangeStats.getSum()).isEqualTo("3.03495578861E12"); assertThat(rangeStats.getMean()).isEqualTo(1.0116519295366666E12D); }); }
public ProductProjectionFacetSearchModel facet() { return new ProductProjectionFacetSearchModel(null, null); }
@Test public void onTimeRangedAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofTime(ATTR_NAME_TIME).onlyGreaterThanOrEqualTo(TIME_22H), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("7.9509203E7"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("7.9509203E7"); assertThat(rangeStats.getMax()).isEqualTo("8.3170204E7"); assertThat(rangeStats.getSum()).isEqualTo("1.62679407E8"); assertThat(rangeStats.getMean()).isEqualTo(8.13397035E7D); }); }
@Test public void onDateRangedSetAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofDateSet(ATTR_NAME_DATE_SET).onlyGreaterThanOrEqualTo(DATE_2001), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("1.0001664E12"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("1.0001664E12"); assertThat(rangeStats.getMax()).isEqualTo("1.0343808E12"); assertThat(rangeStats.getSum()).isEqualTo("3.0347136E12"); assertThat(rangeStats.getMean()).isEqualTo(1.0115712E12D); }); }
@Test public void onDateRangedAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofDate(ATTR_NAME_DATE).onlyGreaterThanOrEqualTo(DATE_2001), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("1.0001664E12"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("1.0001664E12"); assertThat(rangeStats.getMax()).isEqualTo("1.0343808E12"); assertThat(rangeStats.getSum()).isEqualTo("2.0345472E12"); assertThat(rangeStats.getMean()).isEqualTo(1.0172736E12D); }); }
@Test public void onDatetimeRangedAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofDateTime(ATTR_NAME_DATE_TIME).onlyGreaterThanOrEqualTo(DATE_TIME_2001_22H), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("1.000245909203E12"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("1.000245909203E12"); assertThat(rangeStats.getMax()).isEqualTo("1.034463970204E12"); assertThat(rangeStats.getSum()).isEqualTo("2.034709879407E12"); assertThat(rangeStats.getMean()).isEqualTo(1.0173549397035E12D); }); }
@Test public void onMoneyAmountRangedAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofMoney(ATTR_NAME_MONEY).centAmount().onlyGreaterThanOrEqualTo(0L), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("0.0"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("50000.0"); assertThat(rangeStats.getMax()).isEqualTo("100000.0"); assertThat(rangeStats.getSum()).isEqualTo("150000.0"); assertThat(rangeStats.getMean()).isEqualTo(75000D); }); }
@Test public void onMoneyAmountRangedSetAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofMoneySet(ATTR_NAME_MONEY_SET).centAmount().onlyGreaterThanOrEqualTo(0L), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("0.0"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("50000.0"); assertThat(rangeStats.getMax()).isEqualTo("100000.0"); assertThat(rangeStats.getSum()).isEqualTo("200000.0"); assertThat(rangeStats.getMean()).isEqualTo(66666.66666666667D); }); }
@Test public void onNumberSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofNumberSet(ATTR_NAME_NUMBER_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of("5.0", 2L), TermStats.of("10.0", 1L))); }
@Test public void onDateSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofDateSet(ATTR_NAME_DATE_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of("2001-09-11", 2L), TermStats.of("2002-10-12", 1L))); }
@Test public void onBooleanSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofBooleanSet(ATTR_NAME_BOOLEAN_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of(BOOL_TRUE, 2L), TermStats.of(BOOL_FALSE, 1L))); }
@Test public void onTimeSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofTimeSet(ATTR_NAME_TIME_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of("22:05:09.203", 2L), TermStats.of("23:06:10.204", 1L))); }