.discrete().orderedBy(FacetSortOrder.COUNT_DESC).includeZeroCounts(false).maxFacetCount(facetCount) .createFacetingRequest(); facetManager.enableFaceting(facetingRequest);
.discrete().orderedBy(FacetSortOrder.COUNT_DESC).includeZeroCounts(false).maxFacetCount(facetCount) .createFacetingRequest(); facetManager.enableFaceting(facetingRequest);
private FullTextQuery matchAll(FacetingRequest request) { Query luceneQuery = new MatchAllDocsQuery(); FullTextQuery query = fullTextSession.createFullTextQuery( luceneQuery, Car.class ); query.getFacetManager().enableFaceting( request ); assertEquals( "Wrong number of indexed cars", 50, query.getResultSize() ); return query; }
private FullTextQuery matchAll(FacetingRequest request) { Query luceneQuery = new MatchAllDocsQuery(); FullTextQuery query = fullTextSession.createFullTextQuery( luceneQuery, Car.class ); query.getFacetManager().enableFaceting( request ); assertEquals( "Wrong number of indexed cars", 50, query.getResultSize() ); return query; }
private FullTextQuery queryCompanyWithFacet(FacetingRequest request) { FullTextQuery query = fullTextSession.createFullTextQuery( new MatchAllDocsQuery() ); query.getFacetManager().enableFaceting( request ); assertEquals( "Wrong number of query matches", 1, query.getResultSize() ); return query; }
private FullTextQuery queryHondaWithFacet(FacetingRequest request) { Query luceneQuery = queryBuilder( Car.class ).keyword().onField( "make" ).matching( "Honda" ).createQuery(); FullTextQuery query = fullTextSession.createFullTextQuery( luceneQuery, Car.class ); query.getFacetManager().enableFaceting( request ); assertEquals( "Wrong number of query matches", 0, query.getResultSize() ); return query; }
private FullTextQuery queryHondaNoResultsWithFacet(FacetingRequest request) { Query luceneQuery = queryBuilder( Car.class ) .keyword() .onField( "make" ) .matching( "nonExistentValue" ) .createQuery(); FullTextQuery query = fullTextSession.createFullTextQuery( luceneQuery, Car.class ); query.getFacetManager().enableFaceting( request ); assertEquals( "Wrong number of query matches", 0, query.getResultSize() ); return query; } @Test
private FullTextQuery queryHondaWithFacet(FacetingRequest request) { Query luceneQuery = queryBuilder( Car.class ) .keyword() .onField( "make" ) .matching( "Honda" ) .createQuery(); FullTextQuery query = fullTextSession.createFullTextQuery( luceneQuery, Car.class ); query.getFacetManager().enableFaceting( request ); assertEquals( "Wrong number of query matches", 13, query.getResultSize() ); return query; }
private FullTextQuery queryHondaWithFacet(FacetingRequest request) { Query luceneQuery = queryBuilder( Car.class ) .keyword() .onField( "make" ) .matching( "Honda" ) .createQuery(); FullTextQuery query = fullTextSession.createFullTextQuery( luceneQuery, Car.class ); query.getFacetManager().enableFaceting( request ); assertEquals( "Wrong number of query matches", 13, query.getResultSize() ); return query; }
private FullTextQuery queryHondaWithFacet(FacetingRequest request) { Query luceneQuery = queryBuilder( Car.class ) .keyword() .onField( "make" ) .matching( "Honda" ) .createQuery(); FullTextQuery query = fullTextSession.createFullTextQuery( luceneQuery, Car.class ); query.getFacetManager().enableFaceting( request ); assertEquals( "Wrong number of query matches", 13, query.getResultSize() ); return query; }
@Test public void testRangeBelow() { FacetingRequest rangeRequest = queryBuilder( Cd.class ).facet() .name( priceRange ) .onField( indexFieldName ) .range() .below( 1500 ) .createFacetingRequest(); FullTextQuery query = createMatchAllQuery( Cd.class ); FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( rangeRequest ); List<Facet> facets = facetManager.getFacets( priceRange ); assertFacetCounts( facets, new int[] { 5 } ); }
@Test public void testRangeAbove() { FacetingRequest rangeRequest = queryBuilder( Cd.class ).facet() .name( priceRange ) .onField( indexFieldName ) .range() .above( 1500 ) .createFacetingRequest(); FullTextQuery query = createMatchAllQuery( Cd.class ); FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( rangeRequest ); List<Facet> facets = facetManager.getFacets( priceRange ); assertFacetCounts( facets, new int[] { 8 } ); }
@Test public void testRangeAboveExcludeLimit() { FacetingRequest rangeRequest = queryBuilder( Cd.class ).facet() .name( priceRange ) .onField( indexFieldName ) .range() .above( 1500 ).excludeLimit() .createFacetingRequest(); FullTextQuery query = createMatchAllQuery( Cd.class ); FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( rangeRequest ); List<Facet> facets = facetManager.getFacets( priceRange ); assertFacetCounts( facets, new int[] { 5 } ); }
private void doDiscreteFacetingQuery() { QueryBuilder qb = helper.queryBuilder( FacetedEntity.class ); FacetingRequest request = qb.facet() .name( "myRequest" ) .onField( "stringField" ) .discrete() .includeZeroCounts( false ) .createFacetingRequest(); // Mainly, we're testing that executing the query with faceting enabled won't explode HSQuery hsQuery = helper.hsQuery( FacetedEntity.class ); hsQuery.getFacetManager().enableFaceting( request ); helper.assertThat( hsQuery ) .facets( "myRequest" ) .isEmpty(); }
@Test public void testRangeBelowExcludeLimit() { FacetingRequest rangeRequest = queryBuilder( Cd.class ).facet() .name( priceRange ) .onField( indexFieldName ) .range() .below( 1500 ).excludeLimit() .createFacetingRequest(); FullTextQuery query = createMatchAllQuery( Cd.class ); FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( rangeRequest ); List<Facet> facets = facetManager.getFacets( priceRange ); assertFacetCounts( facets, new int[] { 2 } ); }
@Test public void testKnownFieldNameNotConfiguredForFacetingThrowsException() { FacetingRequest request = queryBuilder( Fruit.class ).facet() .name( "foo" ) // faceting name is irrelevant .onField( "name" ) // name is a valid property of apple, but not configured for faceting .discrete() .createFacetingRequest(); try { FullTextQuery query = fullTextSession.createFullTextQuery( new MatchAllDocsQuery(), Fruit.class ); query.getFacetManager().enableFaceting( request ); assertEquals( "Wrong number of query matches", 1, query.getResultSize() ); query.getFacetManager().getFacets( "foo" ); fail( "The specified field name did not exist. Faceting request should fail" ); } catch (SearchException e) { assertTrue( "Unexpected error message: " + e.getMessage(), e.getMessage().startsWith( "HSEARCH000268" ) ); } }
@Test public void testRangeAboveBelow() { FacetingRequest rangeRequest = queryBuilder( Cd.class ).facet() .name( priceRange ) .onField( indexFieldName ) .range() .below( 1500 ) .above( 1500 ).excludeLimit() .createFacetingRequest(); FullTextQuery query = createMatchAllQuery( Cd.class ); FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( rangeRequest ); List<Facet> facets = facetManager.getFacets( priceRange ); assertFacetCounts( facets, new int[] { 5, 5 } ); }
@Test public void testRangeBelowMiddleAbove() { final String facetingName = "cdPriceFaceting"; FacetingRequest rangeRequest = queryBuilder( Cd.class ).facet() .name( facetingName ) .onField( indexFieldName ) .range() .below( 1000 ) .from( 1001 ).to( 1500 ) .above( 1501 ) .createFacetingRequest(); FullTextQuery query = createMatchAllQuery( Cd.class ); query.getFacetManager().enableFaceting( rangeRequest ); List<Facet> facets = query.getFacetManager().getFacets( facetingName ); assertFacetCounts( facets, new int[] { 5, 3, 2 } ); }
@Test public void testRangeQueryForDoubleWithZeroCount() { FacetingRequest rangeRequest = queryBuilder( Fruit.class ).facet() .name( priceRange ) .onField( indexFieldName ) .range() .from( 0.00 ).to( 1.00 ) .from( 1.01 ).to( 1.50 ) .from( 1.51 ).to( 3.00 ) .from( 4.00 ).to( 5.00 ) .includeZeroCounts( true ) .createFacetingRequest(); FullTextQuery query = createMatchAllQuery( Fruit.class ); FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( rangeRequest ); List<Facet> facets = facetManager.getFacets( priceRange ); assertFacetCounts( facets, new int[] { 5, 3, 2, 0 } ); }
@Test public void testRangeQueryForInteger() { FacetingRequest rangeRequest = queryBuilder( Cd.class ).facet() .name( priceRange ) .onField( indexFieldName ) .range() .from( 0 ).to( 1000 ) .from( 1001 ).to( 1500 ) .from( 1501 ).to( 3000 ) .from( 3001 ).to( 8000 ) .includeZeroCounts( true ) .createFacetingRequest(); FullTextQuery query = createMatchAllQuery( Cd.class ); FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( rangeRequest ); List<Facet> facets = facetManager.getFacets( priceRange ); assertFacetCounts( facets, new int[] { 5, 3, 2, 0 } ); }