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; }
query.setProjection(idPropertyName, field); List<Object[]> documents = query.list();
List<Object[]> results = fullTextQuery.setProjection(projectedFields.toArray(new String[projectedFields.size()])).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()); }
/** * Allows settings offset and limit on the query. The default implementation * calls setProjection with SCORE and ID, which MUST BE the first two * projection values. Any overriding method may add further projections but * must start with these two. * * @param ftQuery */ protected void initializeQuery(FullTextQuery ftQuery) { ftQuery .setProjection(ProjectionConstants.SCORE, ProjectionConstants.ID); }
FullTextQuery jpaQuery = ftem.createFullTextQuery(query, ProductModel.class); jpaQuery.setProjection( FullTextQuery.THIS, "Image_url" ); List results = jpaQuery.list(); Object[] firstResult = (Object[]) results.get(0); ProductModel productModel = firstResult[0]; String imageUrl = firstResult[1];
@SuppressWarnings({ "unchecked" }) @Override public List<Object[]> findStartingUsingWildcardAndExactByAttributesWithProjection(Map<String, String> startSentenceOnField, Map<String, String> eqSentenceOnField, List<String> projections) { FullTextQuery fullTextQuery = createFullTextQueryForfindStartingUsingWildcardAndExactByAttributes(startSentenceOnField, eqSentenceOnField); for(String projection : projections) fullTextQuery.setProjection(projection); return fullTextQuery.list(); }
private Long getSonsGrandpaIdFromIndex(FullTextSession session, String name) { FullTextQuery q = session.createFullTextQuery( new TermQuery( new Term( "name", name ) ), Son.class ); q.setProjection( "dad.grandpaId" ); @SuppressWarnings("unchecked") List<Object[]> results = q.list(); if ( results.isEmpty() ) { return null; } return (Long) results.get( 0 )[0]; }
private Long findTruckIdFromIndex(FullTextSession session, String itemDescription) { FullTextQuery q = session.createFullTextQuery( new TermQuery( new Term( "truck.items.description", itemDescription ) ), Driver.class ); q.setProjection( "truck.id" ); @SuppressWarnings("unchecked") List<Object[]> results = q.list(); if ( results.isEmpty() ) { return null; } return (Long) results.get( 0 )[0]; }
FullTextEntityManager fullTextEm = Search.getFullTextEntityManager(this.entityManager); QueryBuilder qb = fullTextEm.getSearchFactory().buildQueryBuilder().forEntity(Person.class).get(); FullTextQuery fullTextQuery = fullTextEm.createFullTextQuery(qb.all().createQuery()); // I added this line to use projections fullTextQuery.setProjection("id", "name", "email", "user", "phone"); Sort sortField = new Sort(new SortField("name", SortField.STRING)); fullTextQuery.setSort(sortField); return fullTextQuery.getResultList();
@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(); }
public void assertFindsByRoadName(String analyzedRoadname) { FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); TermQuery ftQuery = new TermQuery( new Term( "stops.roadName", analyzedRoadname ) ); FullTextQuery query = fullTextSession.createFullTextQuery( ftQuery, BusLine.class ); query.setProjection( "busLineName" ); assertEquals( 1, query.list().size() ); List results = query.list(); String resultName = (String) ( (Object[]) results.get( 0 ) )[0]; assertEquals( "Linea 64", resultName ); tx.commit(); fullTextSession.close(); }
private Document getSingleIndexedDocument(FullTextSession fullTextSession) throws ParseException { Query query = createLuceneQuery(); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( query, Value.class ); fullTextQuery.setProjection( FullTextQuery.DOCUMENT ); fullTextQuery.setResultTransformer( new ProjectionToMapResultTransformer() ); List<?> mappedResults = fullTextQuery.list(); assertTrue( "Wrong result size", mappedResults.size() == 1 ); Map<?, ?> map = (Map<?, ?>) mappedResults.get( 0 ); Document document = (Document) map.get( FullTextQuery.DOCUMENT ); assertNotNull( document ); return document; }
@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 testProjectionUnmappedFieldValues() throws ParseException, IOException { FullTextSession s = Search.getFullTextSession( getSession() ); Transaction tx = s.beginTransaction(); org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( new MatchAllDocsQuery(), CalendarDay.class ); hibQuery.setProjection( "day.year" ); resetFieldSelector(); List<?> result = hibQuery.list(); assertFieldSelectorEnabled( ); //empty: can't use one as the bridge we use mandates optimisations to be disabled assertNotNull( result ); assertFalse( result.isEmpty() ); tx.commit(); }
private void assertExists(FullTextSession s, String keyword, String expectedProjection) { QueryBuilder queryBuilder = s.getSearchFactory().buildQueryBuilder().forEntity( CheeseRollingCompetitor.class ).get(); Query q = queryBuilder.keyword().onField( "Nickname" ).matching( keyword ).createQuery(); FullTextQuery fullTextQuery = s.createFullTextQuery( q, CheeseRollingCompetitor.class ).setProjection( "Nickname" ); List list = fullTextQuery.list(); Assert.assertEquals( 1, list.size() ); Assert.assertEquals( expectedProjection, ( (Object[]) list.get( 0 ) )[0] ); s.clear(); }
@Test public void testClassProjectionFieldSelector() 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.OBJECT_CLASS ); resetFieldSelector(); List<?> result = hibQuery.list(); assertNotNull( result ); assertFalse( result.isEmpty() ); assertFieldSelectorEnabled( ); // empty! tx.commit(); }
@Test public void testStoredFieldProjectionFieldSelector() 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( "id", "lastname", "dept" ); resetFieldSelector(); List<?> result = hibQuery.list(); assertNotNull( result ); assertFalse( result.isEmpty() ); assertFieldSelectorEnabled( "lastname", "dept", "id" ); tx.commit(); }
@Test public void testLuceneDocumentProjectionFieldSelector() throws Exception { FullTextSession s = Search.getFullTextSession( getSession() ); Transaction tx = s.beginTransaction(); QueryParser parser = new QueryParser( "dept", TestConstants.standardAnalyzer ); Query query = parser.parse( "dept:Accounting" ); org.hibernate.search.FullTextQuery hibQuery = s.createFullTextQuery( query, Employee.class ); hibQuery.setProjection( FullTextQuery.DOCUMENT ); resetFieldSelector(); List<?> result = hibQuery.list(); assertNotNull( result ); assertFalse( result.isEmpty() ); assertFieldSelectorDisabled(); //because of DOCUMENT being projected tx.commit(); }
@Test public void testLuceneDocumentIdProjectionFieldSelector() 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 ); resetFieldSelector(); List<?> result = hibQuery.list(); assertNotNull( result ); assertFalse( result.isEmpty() ); assertFieldSelectorDisabled(); //because of only DOCUMENT_ID being projected tx.commit(); }