.discrete().orderedBy(FacetSortOrder.COUNT_DESC).includeZeroCounts(false).maxFacetCount(facetCount) .createFacetingRequest(); facetManager.enableFaceting(facetingRequest); for (String facetField : facetSet) { String facetingName = facetField + FACET_NAME_SUFFIX; List<Facet> facets = facetManager.getFacets(facetingName); Map<String, Integer> facetMap = new LinkedHashMap<>(); List<String> valueList = valueMap.get(facetField); facetManager.getFacetGroup(facetingName).selectFacets(facetList.toArray(new Facet[facetList.size()]));
public List<Car> selectMenuItem(FacetMenuItem item) { // find the right facet using the facet manager List<Facet> facets = currentFullTextQuery.getFacetManager().getFacets( item.getFacetingName() ); Facet facet = facets.get( item.getIndex() ); selectedFacets.add( facet ); // rer-run the query FullTextSession fullTextSession = Search.getFullTextSession( factory.openSession() ); buildFullTextQuery( queryString, fullTextSession ); Transaction tx = fullTextSession.beginTransaction(); // use the facet to narrow down the query currentFullTextQuery.getFacetManager() .getFacetGroup( item.getFacetingName() ) .selectFacets( selectedFacets.toArray( new Facet[selectedFacets.size()] ) ); List<Car> cars = currentFullTextQuery.list(); tx.commit(); fullTextSession.close(); return cars; }
@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 } ); }
public Map<String, List<FacetMenuItem>> getMenuItems() { menuItems = newHashMap(); List<FacetMenuItem> items = newArrayList(); int i = 0; for ( Facet facet : currentFullTextQuery.getFacetManager().getFacets( colorFacetName ) ) { items.add( new FacetMenuItem( facet, selectedFacets.contains( facet ), i ) ); i++; } menuItems.put( colorFacetName, items ); items = newArrayList(); i = 0; for ( Facet facet : currentFullTextQuery.getFacetManager().getFacets( cubicCapacityFacetName ) ) { items.add( new FacetMenuItem( facet, selectedFacets.contains( facet ), i++ ) ); } menuItems.put( cubicCapacityFacetName, items ); return menuItems; }
FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( requestDesc ); facetManager.enableFaceting( requestAsc ); assertFacetCounts( facetManager.getFacets( descendingOrderedFacet ), new int[] { 5, 4, 4, 0 } ); assertFacetCounts( facetManager.getFacets( ascendingOrderedFacet ), new int[] { 0, 4, 4, 5 } ); facetManager.disableFaceting( descendingOrderedFacet ); assertTrue( "descendingOrderedFacet should be disabled", query.getFacetManager().getFacets( descendingOrderedFacet ).isEmpty() ); assertFacetCounts( facetManager.getFacets( ascendingOrderedFacet ), new int[] { 0, 4, 4, 5 } ); facetManager.disableFaceting( ascendingOrderedFacet ); assertTrue( "descendingOrderedFacet should be disabled", facetManager.getFacets( descendingOrderedFacet ).isEmpty() ); assertTrue( "ascendingOrderedFacet should be disabled", facetManager.getFacets( ascendingOrderedFacet ).isEmpty() );
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; }
@Test public void testEnableDisableFacets() { FacetingRequest request = queryBuilder( Car.class ).facet() .name( facetName ) .onField( Car.CUBIC_CAPACITY_STRING_FACET_STRING_ENCODING ) .discrete() .createFacetingRequest(); FullTextQuery query = queryHondaWithFacet( request ); assertTrue( "We should have facet results", query.getFacetManager().getFacets( facetName ).size() > 0 ); query.getFacetManager().disableFaceting( facetName ); query.list(); assertTrue( "We should have no facets", query.getFacetManager().getFacets( facetName ).size() == 0 ); }
@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 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 } ); }
public final <T> AssertFacetContext facets(String facetingRequestName) { HSQuery hsQuery = getHSQuery(); List<Facet> facets = hsQuery.getFacetManager().getFacets( facetingRequestName ); return new AssertFacetContext( this, facetingRequestName, facets ); }
FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( requestDesc ); facetManager.enableFaceting( requestAsc ); assertFacetCounts( facetManager.getFacets( descendingOrderedFacet ), new int[] { 0, 0, 0, 0 } ); assertFacetCounts( facetManager.getFacets( ascendingOrderedFacet ), new int[] { 0, 0, 0, 0 } ); facetManager.disableFaceting( descendingOrderedFacet ); assertTrue( "descendingOrderedFacet should be disabled", query.getFacetManager().getFacets( descendingOrderedFacet ).isEmpty() ); assertFacetCounts( facetManager.getFacets( ascendingOrderedFacet ), new int[] { 0, 0, 0, 0 } ); facetManager.disableFaceting( ascendingOrderedFacet ); assertTrue( "descendingOrderedFacet should be disabled", facetManager.getFacets( descendingOrderedFacet ).isEmpty() ); assertTrue( "ascendingOrderedFacet should be disabled", facetManager.getFacets( ascendingOrderedFacet ).isEmpty() );
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; }
public List<Car> deSelectMenuItem(FacetMenuItem item) { // find the right facet using the facet manager List<Facet> facets = currentFullTextQuery.getFacetManager().getFacets( item.getFacetingName() ); Facet facet = facets.get( item.getIndex() ); selectedFacets.remove( facet ); // rer-run the query FullTextSession fullTextSession = Search.getFullTextSession( factory.openSession() ); buildFullTextQuery( queryString, fullTextSession ); Transaction tx = fullTextSession.beginTransaction(); // use the facet to narrow down the query currentFullTextQuery.getFacetManager() .getFacetGroup( item.getFacetingName() ) .selectFacets( selectedFacets.toArray( new Facet[] { } ) ); List<Car> cars = currentFullTextQuery.list(); tx.commit(); fullTextSession.close(); return cars; }
@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 } ); }
.discrete().orderedBy(FacetSortOrder.COUNT_DESC).includeZeroCounts(false).maxFacetCount(facetCount) .createFacetingRequest(); facetManager.enableFaceting(facetingRequest); for (String facetField : facetSet) { String facetingName = facetField + FACET_NAME_SUFFIX; List<Facet> facets = facetManager.getFacets(facetingName); Map<String, Integer> facetMap = new LinkedHashMap<>(); List<String> valueList = valueMap.get(facetField); facetManager.getFacetGroup(facetingName).selectFacets(facetList.toArray(new Facet[facetList.size()]));
@Test public void testSimpleFaceting() throws Exception { String facetName = "ccs"; FacetingRequest request = queryBuilder( Car.class ).facet() .name( facetName ) .onField( Car.CUBIC_CAPACITY_STRING_FACET_STRING_ENCODING ) .discrete() .createFacetingRequest(); FullTextQuery query = matchAll( request ); List<Facet> facetList = query.getFacetManager().getFacets( facetName ); assertEquals( "Wrong number of facets", 4, facetList.size() ); assertFacet( facetList.get( 0 ), "2407", 17 ); assertFacet( facetList.get( 1 ), "2831", 16 ); assertFacet( facetList.get( 2 ), "3398", 16 ); assertFacet( facetList.get( 3 ), "2500", 1 ); }
FacetManager facetManager = query.getFacetManager(); facetManager.enableFaceting( requestDesc ); facetManager.enableFaceting( requestAsc ); assertFacetCounts( facetManager.getFacets( descendingOrderedFacet ), new int[] { 5, 4, 4, 0 } ); assertFacetCounts( facetManager.getFacets( ascendingOrderedFacet ), new int[] { 0, 4, 4, 5 } ); facetManager.disableFaceting( descendingOrderedFacet ); assertTrue( "descendingOrderedFacet should be disabled", query.getFacetManager().getFacets( descendingOrderedFacet ).isEmpty() ); assertFacetCounts( facetManager.getFacets( ascendingOrderedFacet ), new int[] { 0, 4, 4, 5 } ); facetManager.disableFaceting( ascendingOrderedFacet ); assertTrue( "descendingOrderedFacet should be disabled", facetManager.getFacets( descendingOrderedFacet ).isEmpty() ); assertTrue( "ascendingOrderedFacet should be disabled", facetManager.getFacets( ascendingOrderedFacet ).isEmpty() );
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; }
public void testFaceting() throws Exception { QueryBuilder queryBuilder = qf.buildQueryBuilderForClass(Car.class).get(); FacetingRequest request = queryBuilder.facet() .name(facetName) .onField(indexFieldName) .discrete() .createFacetingRequest(); Query luceneQuery = queryBuilder.all().createQuery(); CacheQuery<?> query = qf.getQuery(luceneQuery); query.getFacetManager().enableFaceting(request); List<Facet> facetList = query.getFacetManager().getFacets(facetName); assertEquals("Wrong number of facets", 2, facetList.size()); assertEquals("4000", facetList.get(0).getValue()); assertEquals(2, facetList.get(0).getCount()); assertEquals(indexFieldName, facetList.get(0).getFieldName()); assertEquals("2341", facetList.get(1).getValue()); assertEquals(1, facetList.get(1).getCount()); assertEquals(indexFieldName, facetList.get(1).getFieldName()); }
// create a fulltext query Query luceneQuery = builder.all().createQuery(); // match all query FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, clazz ); // retrieve facet manager and apply faceting request FacetManager facetManager = fullTextQuery.getFacetManager(); facetManager.enableFaceting( priceFacetingRequest ); // get the list of Cd List<Cd> cds = fullTextQuery.list(); assertTrue(cds.size() == 10); // retrieve the faceting results List<Facet> facets = facetManager.getFacets( "priceFaceting" ); assertTrue(facets.get(0).getCount() == 2) // apply first facet as additional search criteria FacetSelection facetSelection = facetManager.getFacetGroup( "priceFaceting" ); facetSelection.selectFacets( facets.get( 0 ) ); // re-execute the query cds = fullTextQuery.list(); assertTrue(cds.size() == 2);