@Override public FacetManager getFacetManager() { return hSearchQuery.getFacetManager(); }
@Override public FacetManager getFacetManager() { return hSearchQuery.getFacetManager(); }
@Override public FacetManager getFacetManager() { return queryDefinition.getHsQuery().getFacetManager(); }
public final <T> AssertFacetContext facets(String facetingRequestName) { HSQuery hsQuery = getHSQuery(); List<Facet> facets = hsQuery.getFacetManager().getFacets( facetingRequestName ); return new AssertFacetContext( this, facetingRequestName, facets ); }
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 clear_faceting() throws Exception { QueryBuilder qb = helper.queryBuilder( IndexedEntity.class ); HSQuery hsQuery = queryAll(); helper.assertThat( hsQuery ).matchesExactlyIds( 0, 1, 2 ); String facetingRequestName = "facet1"; FacetingRequest facetingRequest1 = qb.facet() .name( facetingRequestName ) .onField( "facetField" ) .discrete() .createFacetingRequest(); hsQuery.getFacetManager().enableFaceting( facetingRequest1 ); helper.assertThat( hsQuery ).facets( facetingRequestName ) .includes( "zero", 1 ) .includes( "one", 1 ) .includes( "two", 1 ) .only(); hsQuery.getFacetManager().disableFaceting( facetingRequestName ); helper.assertThat( hsQuery ).facets( facetingRequestName ).isEmpty(); }
@Test public void stringMap() throws Exception { StringMapFacetEntity entity = new StringMapFacetEntity( 1L ); helper.add( entity ); entity = new StringMapFacetEntity( 1L, "foo" ); helper.add( entity ); entity = new StringMapFacetEntity( 2L, "foo", "bar" ); helper.add( entity ); HSQuery hsQuery = sfHolder.getSearchFactory().createHSQuery( new MatchAllDocsQuery(), StringMapFacetEntity.class ); QueryBuilder builder = sfHolder.getSearchFactory().buildQueryBuilder().forEntity( StringMapFacetEntity.class ).get(); FacetingRequest facetReq = builder.facet() .name( "someFacet" ) .onField( "facet" ) .discrete() .orderedBy( FacetSortOrder.COUNT_DESC ) .includeZeroCounts( false ) .maxFacetCount( 10 ) .createFacetingRequest(); List<Facet> facets = hsQuery.getFacetManager().enableFaceting( facetReq ).getFacets( "someFacet" ); assertEquals( "There should be two facets", 2, facets.size() ); assertFacet( facets.get( 0 ), "foo", 2 ); assertFacet( facets.get( 1 ), "bar", 1 ); }
@Test public void stringCollection() throws Exception { StringCollectionFacetEntity entity = new StringCollectionFacetEntity( 1L ); helper.add( entity ); entity = new StringCollectionFacetEntity( 1L, "foo" ); helper.add( entity ); entity = new StringCollectionFacetEntity( 2L, "foo", "bar" ); helper.add( entity ); HSQuery hsQuery = sfHolder.getSearchFactory().createHSQuery( new MatchAllDocsQuery(), StringCollectionFacetEntity.class ); QueryBuilder builder = sfHolder.getSearchFactory().buildQueryBuilder().forEntity( StringCollectionFacetEntity.class ).get(); FacetingRequest facetReq = builder.facet() .name( "someFacet" ) .onField( "facet" ) .discrete() .orderedBy( FacetSortOrder.COUNT_DESC ) .includeZeroCounts( false ) .maxFacetCount( 10 ) .createFacetingRequest(); List<Facet> facets = hsQuery.getFacetManager().enableFaceting( facetReq ).getFacets( "someFacet" ); assertEquals( "There should be two facets", 2, facets.size() ); assertFacet( facets.get( 0 ), "foo", 2 ); assertFacet( facets.get( 1 ), "bar", 1 ); }
@Test public void stringArray() throws Exception { StringArrayFacetEntity entity = new StringArrayFacetEntity( 1L ); helper.add( entity ); entity = new StringArrayFacetEntity( 1L, "foo" ); helper.add( entity ); entity = new StringArrayFacetEntity( 2L, "foo", "bar" ); helper.add( entity ); HSQuery hsQuery = sfHolder.getSearchFactory().createHSQuery( new MatchAllDocsQuery(), StringArrayFacetEntity.class ); QueryBuilder builder = sfHolder.getSearchFactory().buildQueryBuilder().forEntity( StringArrayFacetEntity.class ).get(); FacetingRequest facetReq = builder.facet() .name( "someFacet" ) .onField( "facet" ) .discrete() .orderedBy( FacetSortOrder.COUNT_DESC ) .includeZeroCounts( false ) .maxFacetCount( 10 ) .createFacetingRequest(); List<Facet> facets = hsQuery.getFacetManager().enableFaceting( facetReq ).getFacets( "someFacet" ); assertEquals( "There should be two facets", 2, facets.size() ); assertFacet( facets.get( 0 ), "foo", 2 ); assertFacet( facets.get( 1 ), "bar", 1 ); }
@Test @Ignore // HSEARCH-1927 : Range faceting on multiple numeric values does not work public void numberArray() throws Exception { NumberArrayFacetEntity entity = new NumberArrayFacetEntity( 1L ); helper.add( entity ); entity = new NumberArrayFacetEntity( 1L, 42 ); helper.add( entity ); entity = new NumberArrayFacetEntity( 2L, 43, 442 ); helper.add( entity ); HSQuery hsQuery = sfHolder.getSearchFactory().createHSQuery( new MatchAllDocsQuery(), NumberArrayFacetEntity.class ); QueryBuilder builder = sfHolder.getSearchFactory().buildQueryBuilder().forEntity( NumberArrayFacetEntity.class ).get(); FacetingRequest facetReq = builder.facet() .name( "someFacet" ) .onField( "facet" ) .range() .from( 0.0f ).to( 100.0f ).excludeLimit() .from( 100.0f ).to( 500.0f ).excludeLimit() .orderedBy( FacetSortOrder.COUNT_DESC ) .includeZeroCounts( false ) .maxFacetCount( 10 ) .createFacetingRequest(); List<Facet> facets = hsQuery.getFacetManager().enableFaceting( facetReq ).getFacets( "someFacet" ); assertEquals( "There should be two facets", 2, facets.size() ); assertFacet( facets.get( 0 ), "[0.0, 100.0)", 2 ); assertFacet( facets.get( 1 ), "[100.0, 500.0)", 1 ); }
@Test @Ignore // HSEARCH-1927 : Range faceting on multiple numeric values does not work public void numberMap() throws Exception { NumberMapFacetEntity entity = new NumberMapFacetEntity( 1L ); helper.add( entity ); entity = new NumberMapFacetEntity( 1L, 42.2f ); helper.add( entity ); entity = new NumberMapFacetEntity( 2L, 42.3f, 442.2f ); helper.add( entity ); HSQuery hsQuery = sfHolder.getSearchFactory().createHSQuery( new MatchAllDocsQuery(), NumberMapFacetEntity.class ); QueryBuilder builder = sfHolder.getSearchFactory().buildQueryBuilder().forEntity( NumberMapFacetEntity.class ).get(); FacetingRequest facetReq = builder.facet() .name( "someFacet" ) .onField( "facet" ) .range() .from( 0.0f ).to( 100.0f ).excludeLimit() .from( 100.0f ).to( 500.0f ).excludeLimit() .orderedBy( FacetSortOrder.COUNT_DESC ) .includeZeroCounts( false ) .maxFacetCount( 10 ) .createFacetingRequest(); List<Facet> facets = hsQuery.getFacetManager().enableFaceting( facetReq ).getFacets( "someFacet" ); assertEquals( "There should be two facets", 2, facets.size() ); assertFacet( facets.get( 0 ), "[0.0, 100.0)", 2 ); assertFacet( facets.get( 1 ), "[100.0, 500.0)", 1 ); }
@Test @Ignore // HSEARCH-1927 : Range faceting on multiple numeric values does not work public void numberCollection() throws Exception { NumberCollectionFacetEntity entity = new NumberCollectionFacetEntity( 1L ); helper.add( entity ); entity = new NumberCollectionFacetEntity( 1L, 42.2f ); helper.add( entity ); entity = new NumberCollectionFacetEntity( 2L, 42.3f, 442.2f ); helper.add( entity ); HSQuery hsQuery = sfHolder.getSearchFactory().createHSQuery( new MatchAllDocsQuery(), NumberCollectionFacetEntity.class ); QueryBuilder builder = sfHolder.getSearchFactory().buildQueryBuilder().forEntity( NumberCollectionFacetEntity.class ).get(); FacetingRequest facetReq = builder.facet() .name( "someFacet" ) .onField( "facet" ) .range() .from( 0.0f ).to( 100.0f ).excludeLimit() .from( 100.0f ).to( 500.0f ).excludeLimit() .orderedBy( FacetSortOrder.COUNT_DESC ) .includeZeroCounts( false ) .maxFacetCount( 10 ) .createFacetingRequest(); List<Facet> facets = hsQuery.getFacetManager().enableFaceting( facetReq ).getFacets( "someFacet" ); assertEquals( "There should be two facets", 2, facets.size() ); assertFacet( facets.get( 0 ), "[0.0, 100.0)", 2 ); assertFacet( facets.get( 1 ), "[100.0, 500.0)", 1 ); }
private void doIntegerRangeFacetingQuery() { QueryBuilder qb = helper.queryBuilder( FacetedEntity.class ); FacetingRequest request = qb.facet() .name( "myRequest" ) .onField( "integerField" ) .range() .from( 0 ).to( 1000 ) .from( 1001 ).to( 1500 ) .includeZeroCounts( true ) .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" ) .includes( "[0, 1000]", 0 ) .includes( "[1001, 1500]", 0 ) .only(); }
private void doFloatRangeFacetingQuery() { QueryBuilder qb = helper.queryBuilder( FacetedEntity.class ); FacetingRequest request = qb.facet() .name( "myRequest" ) .onField( "floatField" ) .range() .from( 0.0f ).to( 1000.0f ).excludeLimit() .from( 1000.0f ).to( 1500.0f ).excludeLimit() .includeZeroCounts( true ) .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" ) .includes( "[0.0, 1000.0)", 0 ) .includes( "[1000.0, 1500.0)", 0 ) .only(); }