@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(); }
public ListPart<Object[]> listPartProjection(Long firstResult, Long maxResults, String... fields) { if (noUniqueTerms) { return ListPart.newListPart(Collections.emptyList(), firstResult, maxResults, 0L, true); } FullTextQuery fullTextQuery = buildQuery(); applyPartialResults(fullTextQuery, firstResult, maxResults); fullTextQuery.setProjection(fields); @SuppressWarnings("unchecked") List<Object[]> list = fullTextQuery.list(); return ListPart.newListPart(list, firstResult, maxResults, (long) fullTextQuery.getResultSize(), !fullTextQuery.hasPartialResults()); }
FullTextQuery myQuery = ... //setup my lucene query here Criteria fetchAssociationCriteria = session.createCriteria(Foo.class); fetchAssociationCriteria.setFetchMode("bar", FetchMode.JOIN); List<Foo> foos = myQuery.setCriteriaQuery(fetchAssociationCriteria).getResultList();
private void applyPartialResults(FullTextQuery fullTextQuery, Long firstResult, Long maxResults) { if (firstResult != null) { fullTextQuery.setFirstResult(firstResult.intValue()); } if (maxResults != null) { fullTextQuery.setMaxResults(maxResults.intValue()); } } }
public List<Object[]> listProjection(String... fields) { if (noUniqueTerms) { return Collections.emptyList(); } FullTextQuery fullTextQuery = buildQuery(); fullTextQuery.setProjection(fields); @SuppressWarnings("unchecked") List<Object[]> list = fullTextQuery.list(); return list; }
@Test public void testBooleanProperty() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'term' : { 'active' : 'true' } } }" ); List<?> result = session.createFullTextQuery( query, GolfPlayer.class ) .setProjection( ElasticsearchProjectionConstants.ID ) .list(); assertThat( result ).hasSize( 1 ); Object[] projection = (Object[]) result.iterator().next(); assertThat( projection[0] ).isEqualTo( 1L ); tx.commit(); s.close(); }
Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); QueryBuilder qb = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity( Tractor.class ).get(); Query query = qb.keyword().wildcard().onField( "owner" ).matching( "p*" ).createQuery(); Criteria criteria = session.createCriteria( Tractor.class ); criteria.add( Restrictions.eq( "hasColor", Boolean.FALSE ) ); FullTextQuery hibQuery = fullTextSession.createFullTextQuery( query, Tractor.class ) .setCriteriaQuery( criteria ); List<Tractor> result = hibQuery.list(); hibQuery.getResultSize(); assertThat( true ).as( "HSEARCH000105 should have been raised" ).isFalse(); tx.commit(); tx = session.beginTransaction(); for ( Object element : session.createQuery( "select t from Tractor t" ).list() ) { session.delete( element ); tx.commit(); session.close();
@Test public void testCriteriaWithoutFilteredEntity() throws Exception { indexTestData(); // Search Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); MultiFieldQueryParser parser = new MultiFieldQueryParser( new String[] { "kurztext" }, TestConstants.standardAnalyzer ); Query query = parser.parse( "combi OR sport" ); Criteria criteria = session.createCriteria( AbstractCar.class ); criteria.add( Restrictions.eq( "hasColor", Boolean.FALSE ) ); org.hibernate.query.Query hibQuery = fullTextSession.createFullTextQuery( query ) .setCriteriaQuery( criteria ); List result = hibQuery.list(); assertEquals( 2, result.size() ); tx.commit(); session.close(); }
@SuppressWarnings("unchecked") private void searchSong(Session session) throws Exception { FullTextSession fullTextSession = Search.getFullTextSession( session ); Transaction tx = session.beginTransaction(); QueryParser parser = new QueryParser( XMPDM.ARTIST.getName(), TestConstants.standardAnalyzer ); Query query = parser.parse( "Emmanuel" ); List<Song> result = fullTextSession.createFullTextQuery( query ).list(); assertEquals( "Emmanuel is not an artist", 0, result.size() ); query = parser.parse( "Hardy" ); result = fullTextSession.createFullTextQuery( query ).list(); assertEquals( "Hardy is the artist", 1, result.size() ); tx.commit(); }
@Test @TestForIssue(jiraKey = "HSEARCH-2630") public void objectLoading_multiClassesQueryLoader_singleResult() { Session s = openSession(); try { Transaction tx = s.beginTransaction(); A entity = new A(); entity.id = 1L; s.persist( entity ); tx.commit(); FullTextSession session = Search.getFullTextSession( s ); FullTextQuery query = session.createFullTextQuery( matchAll(), A.class, B.class ); assertEquals( 0, getStatistics().getObjectsLoadedCount() ); query.getResultList(); assertEquals( 1, getStatistics().getObjectsLoadedCount() ); query = session.createFullTextQuery( matchAll(), A.class, B.class ); query.getResultList(); assertEquals( 2, getStatistics().getObjectsLoadedCount() ); } finally { s.close(); } }
@Test public void testDateResolution() { Session s = openSession(); FullTextSession fullTextSession = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); Calendar dob = Calendar.getInstance( TimeZone.getTimeZone( "UTC" ), Locale.ENGLISH ); dob.set( 1958, 3, 7, 7, 7, 7 ); final QueryBuilder monthQb = fullTextSession.getSearchFactory() .buildQueryBuilder().forEntity( GolfPlayer.class ).get(); Query query = monthQb.keyword().onField( "dateOfBirth" ).matching( dob.getTime() ).createQuery(); assertEquals( 1, fullTextSession.createFullTextQuery( query, GolfPlayer.class ).getResultSize() ); tx.commit(); s.close(); }
@SuppressWarnings("unchecked") @Test public void testResultOrderedByIdAsString() throws Exception { Transaction tx = fullTextSession.beginTransaction(); Query query = queryParser.parse( "summary:lucene" ); FullTextQuery hibQuery = fullTextSession.createFullTextQuery( query, Book.class ); Sort sort = new Sort( new SortField( "id", SortField.Type.STRING, false ) ); hibQuery.setSort( sort ); List<Book> result = hibQuery.list(); assertNotNull( result ); assertThat( result ).extracting( "id" ).containsExactly( 1, 10, 2, 3 ); tx.commit(); }
@Test public void testObjectTypeFilteringSingleClass() throws Exception { Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Music.class ); List result = fullTextQuery.list(); assertEquals( "Should match the music only", 1, result.size() ); tx.commit(); fullTextSession.close(); }
private void searchSongDsl(Session session) throws Exception { FullTextSession fullTextSession = Search.getFullTextSession( session ); Transaction tx = session.beginTransaction(); QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity( Song.class ).get(); Query queryEmmanuel = queryBuilder.keyword().onField( "mp3FileName" ).ignoreFieldBridge().matching( "Emmanuel" ).createQuery(); List<Song> result = fullTextSession.createFullTextQuery( queryEmmanuel ).list(); assertEquals( "Emmanuel is not an artist", 0, result.size() ); Query queryHardy = queryBuilder.keyword().onField( "mp3FileName" ).ignoreFieldBridge().matching( "Hardy" ).createQuery(); result = fullTextSession.createFullTextQuery( queryHardy ).list(); assertEquals( "Hardy is the artist", 1, result.size() ); tx.commit(); }
@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 @SuppressWarnings("deprecation") @TestForIssue(jiraKey = "HSEARCH-2631") public void objectLoading_singleClassQueryLoader_criteria_iterate() { Session s = openSession(); try { Transaction tx = s.beginTransaction(); A entity = new A(); entity.id = 1L; s.persist( entity ); tx.commit(); FullTextSession session = Search.getFullTextSession( s ); FullTextQuery query = session.createFullTextQuery( matchAll() ) .setCriteriaQuery( session.createCriteria( A.class ) ); assertEquals( 0, getStatistics().getObjectsLoadedCount() ); Iterator<?> iterator = query.iterate(); iterator.next(); assertEquals( 1, getStatistics().getObjectsLoadedCount() ); query = session.createFullTextQuery( matchAll(), A.class ); iterator = query.iterate(); iterator.next(); assertEquals( 2, getStatistics().getObjectsLoadedCount() ); } finally { s.close(); } }
@Test public void testLuceneDocumentIdProjection() throws Exception { FullTextSession s = Search.getFullTextSession( getSession() ); Transaction tx = s.beginTransaction(); QueryParser parser = new QueryParser( "dept", TestConstants.standardAnalyzer ); Query query = parser.parse( "dept:ITech" ); org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class ); hibQuery.setProjection( FullTextQuery.DOCUMENT_ID ); List<?> result = hibQuery.list(); assertNotNull( result ); Object[] projection = (Object[]) result.get( 0 ); assertTrue( "DOCUMENT_ID incorrect", projection[0] instanceof Integer ); tx.commit(); }
@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 public void testGetResultSize() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'abstract' : 'Hibernate' } } }" ); FullTextQuery fullTextQuery = session.createFullTextQuery( query, ScientificArticle.class ); assertThat( fullTextQuery.getResultSize() ).isEqualTo( 4 ); tx.commit(); s.close(); }
private List<?> doQuery(Session slaveSession) throws ParseException { FullTextSession ftSession = Search.getFullTextSession( slaveSession ); Query luceneQuery = parser.parse( "logo:Boston or logo:Mapple leaves" ); slaveSession.getTransaction().begin(); FullTextQuery query = ftSession.createFullTextQuery( luceneQuery ); List<?> result = query.list(); slaveSession.getTransaction().commit(); return result; }