private void applyPartialResults(FullTextQuery fullTextQuery, Long firstResult, Long maxResults) { if (firstResult != null) { fullTextQuery.setFirstResult(firstResult.intValue()); } if (maxResults != null) { fullTextQuery.setMaxResults(maxResults.intValue()); } } }
@Override @SuppressWarnings("unchecked") public List<Object> search(final SearchQueryBuilder query, final int firstResult, final int maxResults, final Class<?> indexClass) { List<Object> result = new ArrayList<Object>(); final FullTextQuery hibernateQuery = createFullTextQuery(query, indexClass); if (hibernateQuery != null) { if (firstResult >= 0) { hibernateQuery.setFirstResult(firstResult); hibernateQuery.setMaxResults(maxResults); } result = hibernateQuery.list(); } return result; }
@SuppressWarnings("unchecked") @Override public List<T> findMixedByAttributesPaginated(Map<String, String> eqSentenceOnField, Map<String, String> eqMustSentenceOnField, int index, int paginationSize) { FullTextQuery fullTextQuery = createFullTextQueryForfindMixedByAttribute(eqSentenceOnField, eqMustSentenceOnField); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@SuppressWarnings("unchecked") @Override public List<T> findExactByAttributesPaginated(Map<String, String> eqSentenceOnField, int index, int paginationSize) { FullTextQuery fullTextQuery = createFullTextQueryForfindExactByAttribute(eqSentenceOnField); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@SuppressWarnings("unchecked") @Override public List<T> findMultiFieldSameAttributesAndExactByAttributesPaginated( Map<String, Set<String>> attributeForMultipleFieldsMap, Map<String, String> eqSentenceOnField, int index, int paginationSize) { FullTextQuery fullTextQuery = createFullTextQueryForfindMultiFieldSameAttributesAndExactByAttributes(attributeForMultipleFieldsMap, eqSentenceOnField); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@SuppressWarnings("unchecked") public List<T> findSetOfMultiFieldSameAttributesAndSetOfExactByAttributesPaginated(Set<Map<String, Set<String>>> setAttributeForMultipleFieldsMaps, Set<Map<String, String>> setEqSentenceOnFields, int index, int paginationSize){ FullTextQuery fullTextQuery = createFullTextQueryForfindSetOfMultiFieldSameAttributesAndSetOfExactByAttributes(setAttributeForMultipleFieldsMaps, setEqSentenceOnFields); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@SuppressWarnings("unchecked") @Override public List<T> findStartingUsingWildcardAndExactByAttributesPaginated(Map<String, String> startSentenceOnField, Map<String, String> eqSentenceOnField, int index, int paginationSize) { FullTextQuery fullTextQuery = createFullTextQueryForfindStartingUsingWildcardAndExactByAttributes(startSentenceOnField, eqSentenceOnField); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@SuppressWarnings("unchecked") @Override public List<T> findNotExactByAttributesPaginated(Map<String, String> eqSentenceOnField, int index, int paginationSize) { FullTextQuery fullTextQuery = createFullTextQueryForfindNotExactByAttribute(eqSentenceOnField); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@SuppressWarnings("unchecked") @Override public List<T> findNotExactByAttributesWKeywordsPaginated(Map<String, String> eqSentenceOnField, int index, int paginationSize) { FullTextQuery fullTextQuery = createFullTextQueryForfindNotExactByAttributeWKeywords(eqSentenceOnField); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@SuppressWarnings("unchecked") @Override public List<T> findMixedByAttributesWKeywordsPaginated(Map<String, String> eqSentenceOnField, Map<String, String> eqMustSentenceOnField, int index, int paginationSize) { FullTextQuery fullTextQuery = createFullTextQueryForfindMixedByAttributeWKeywords(eqSentenceOnField, eqMustSentenceOnField); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@SuppressWarnings("unchecked") @Override public List<T> findSetOfExactByAttributesPaginated(Set<Map<String, String>> setEqSentenceOnFields, int index, int paginationSize) { FullTextQuery fullTextQuery = createFullTextQueryForfindSetOfExactByAttributes(setEqSentenceOnFields); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@SuppressWarnings("unchecked") @Override public List<T> findSetOfStartingUsingWildcardAndSetOfExactByAttributesPaginated( Set<Map<String, String>> setOfStartSentenceOnFields, Set<Map<String, String>> setOfEqSentenceOnFields, int index, int paginationSize) { FullTextQuery fullTextQuery = createFullTextQueryForfindSetOfStartingUsingWildcardAndSetOfExactByAttributes(setOfStartSentenceOnFields, setOfEqSentenceOnFields); fullTextQuery.setFirstResult(index); fullTextQuery.setMaxResults(paginationSize); fullTextQuery.setFetchSize(paginationSize); return fullTextQuery.list(); }
@Test public void testFirstResultAndMaxResults() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'abstract' : 'Hibernate' } } }" ); List<?> result = session.createFullTextQuery( query, ScientificArticle.class ) .setFirstResult( 1 ) .setMaxResults( 2 ) .setSort( new Sort( new SortField( "id", SortField.Type.STRING, false ) ) ) .list(); assertThat( result ).extracting( "title" ).containsExactlyInAnyOrder( "Latest in ORM", "High-performance ORM" ); tx.commit(); s.close(); }
/** * Test for HSEARCH-604. Tests that max result 0 does not throw an exception. * * @throws Exception in case the test fails. */ @Test public void testMaxResultZero() throws Exception { FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); QueryParser parser = new QueryParser( "dept", TestConstants.standardAnalyzer ); Query query = parser.parse( "dept:foo" ); org.hibernate.search.FullTextQuery hibQuery = fullTextSession.createFullTextQuery( query, Employee.class ); hibQuery.setFirstResult( 0 ); hibQuery.setMaxResults( 0 ); List result = hibQuery.list(); assertTrue( "We should get the empty result list", result.isEmpty() ); hibQuery.setFirstResult( 1 ); hibQuery.setMaxResults( 0 ); result = hibQuery.list(); assertTrue( "We should get the empty result list", result.isEmpty() ); tx.commit(); fullTextSession.close(); }
public static void applyRequestOptions(org.hibernate.search.FullTextQuery fullTextQuery, RequestOptions requestOptions, Class clazz, Session session) { if (requestOptions != null) { // Set Paging if (requestOptions.hasPagination()) { fullTextQuery.setFirstResult(requestOptions.getFirstResult()); fullTextQuery.setMaxResults(requestOptions.getNbOfResults()); } // Set Sort if (requestOptions.hasSortOption()) { org.apache.lucene.search.Sort sort = new org.apache.lucene.search.Sort( new SortField(requestOptions.getSortCriteria(), !requestOptions .isSortAscendingly())); fullTextQuery.setSort(sort); } // Set Fetch if (requestOptions.hasFetchOption()) { Criteria criteria = session.createCriteria(clazz).setFetchMode( requestOptions.getFetchCriteria(), FetchMode.JOIN); fullTextQuery.setCriteriaQuery(criteria); } } }
@Override public List<?> list(SharedSessionContractImplementor session, QueryParameters queryParameters) throws HibernateException { FullTextSession fullTextSession = Search.getFullTextSession( (Session) session ); LuceneQueryParsingResult parsingResult = getLuceneQuery( queryParameters, fullTextSession ); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( parsingResult.getQuery(), parsingResult.getTargetEntity() ); if ( requiresProjections( parsingResult.getProjections() ) ) { fullTextQuery.setProjection( parsingResult.getProjections().toArray( new String[parsingResult.getProjections().size()] ) ); } fullTextQuery.setSort( parsingResult.getSort() ); if ( queryParameters.getRowSelection().getFirstRow() != null ) { fullTextQuery.setFirstResult( queryParameters.getRowSelection().getFirstRow() ); } if ( queryParameters.getRowSelection().getMaxRows() != null ) { fullTextQuery.setMaxResults( queryParameters.getRowSelection().getMaxRows() ); } return fullTextQuery.list(); }
@Test public void testIterateEmptyHits() throws Exception { FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); QueryParser parser = new QueryParser( "dept", TestConstants.standardAnalyzer ); Query query = parser.parse( "dept:XXX" ); org.hibernate.search.FullTextQuery hibQuery = fullTextSession.createFullTextQuery( query, Employee.class ); Iterator iter = hibQuery.iterate(); assertFalse( iter.hasNext() ); hibQuery = fullTextSession.createFullTextQuery( query, Employee.class ).setFirstResult( 10 ).setMaxResults( 20 ); iter = hibQuery.iterate(); assertFalse( iter.hasNext() ); tx.commit(); fullTextSession.close(); }
@Test public void testListEmptyHits() throws Exception { FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); QueryParser parser = new QueryParser( "dept", TestConstants.standardAnalyzer ); Query query = parser.parse( "dept:XXX" ); org.hibernate.search.FullTextQuery hibQuery = fullTextSession.createFullTextQuery( query, Employee.class ); List result = hibQuery.list(); assertEquals( 0, result.size() ); hibQuery = fullTextSession.createFullTextQuery( query, Employee.class ).setFirstResult( 10 ).setMaxResults( 20 ); result = hibQuery.list(); assertEquals( 0, result.size() ); tx.commit(); fullTextSession.close(); }
@Test public void testFetchSizeNonDefaultFirstAndMaxNoHits() throws Exception { FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); QueryParser parser = new QueryParser( "dept", TestConstants.standardAnalyzer ); Query query = parser.parse( "dept:XXX" ); org.hibernate.search.FullTextQuery hibQuery = fullTextSession.createFullTextQuery( query, Employee.class ); hibQuery.setProjection( "id", "lastname", "dept" ); hibQuery.setFetchSize( 3 ); hibQuery.setFirstResult( 1 ); hibQuery.setMaxResults( 3 ); ScrollableResults results = hibQuery.scroll(); results.beforeFirst(); Object[] result = results.get(); assertNull( "non-null entity infos returned", result ); tx.commit(); fullTextSession.close(); }
@Test public void testScrollEmptyHits() throws Exception { FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); QueryParser parser = new QueryParser( "dept", TestConstants.standardAnalyzer ); Query query = parser.parse( "dept:XXX" ); org.hibernate.search.FullTextQuery hibQuery = fullTextSession.createFullTextQuery( query, Employee.class ); ScrollableResults projections = hibQuery.scroll(); projections.beforeFirst(); projections.next(); Object[] projection = projections.get(); assertNull( projection ); hibQuery = fullTextSession.createFullTextQuery( query, Employee.class ).setFirstResult( 10 ).setMaxResults( 20 ); projections = hibQuery.scroll(); projections.beforeFirst(); projections.next(); projection = projections.get(); assertNull( projection ); tx.commit(); fullTextSession.close(); }