fullTextQuery.setFirstResult(page.getFirstResult()).setMaxResults(page.getPageSize());
fullTextQuery.setFirstResult(page.getFirstResult()).setMaxResults(page.getPageSize());
/** * @param fullTextQuery * @param pageIndex * @param pageSize * @param maxResults * @return results page */ protected PageHandler getPage(FullTextQuery fullTextQuery, Integer pageIndex, Integer pageSize, Integer maxResults) { PageHandler page = new PageHandler(pageIndex, pageSize, fullTextQuery.getResultSize(), maxResults); if (CommonUtils.notEmpty(pageSize)) { fullTextQuery.setFirstResult(page.getFirstResult()).setMaxResults(page.getPageSize()); } page.setList(fullTextQuery.getResultList()); return page; }
/** * @param fullTextQuery * @param pageIndex * @param pageSize * @param maxResults * @return results page */ protected PageHandler getPage(FullTextQuery fullTextQuery, Integer pageIndex, Integer pageSize, Integer maxResults) { PageHandler page = new PageHandler(pageIndex, pageSize, fullTextQuery.getResultSize(), maxResults); if (CommonUtils.notEmpty(pageSize)) { fullTextQuery.setFirstResult(page.getFirstResult()).setMaxResults(page.getPageSize()); } page.setList(fullTextQuery.getResultList()); return page; }
@SuppressWarnings("unchecked") @Override public List<Project> searchByName(String searchTerm, Integer limit, Integer offset) { FullTextQuery query = getSearchByNameQuery(searchTerm); // Sort List<SortField> sortFields = ImmutableList.<SortField>builder() .add(new SortField(Project.NAME_SORT_FIELD_NAME, SortField.Type.STRING)) .build(); query.setSort(new Sort(sortFields.toArray(new SortField[sortFields.size()]))); if (offset != null) { query.setFirstResult(offset); } if (limit != null) { query.setMaxResults(limit); } return (List<Project>) query.getResultList(); }
@SuppressWarnings("unchecked") @Override public List<Artifact> searchByName(String searchTerm, ArtifactDeprecationStatus deprecation, Integer limit, Integer offset) { FullTextQuery query = getSearchByNameQuery(searchTerm, deprecation); // Sort List<SortField> sortFields = ImmutableList.<SortField>builder() .add(new SortField(Binding.artifact().group().getPath() + '.' + ArtifactGroup.GROUP_ID_SORT_FIELD_NAME, SortField.Type.STRING)) .add(new SortField(Artifact.ARTIFACT_ID_SORT_FIELD_NAME, SortField.Type.STRING)) .build(); query.setSort(new Sort(sortFields.toArray(new SortField[sortFields.size()]))); if (offset != null) { query.setFirstResult(offset); } if (limit != null) { query.setMaxResults(limit); } return (List<Artifact>) query.getResultList(); }
@SuppressWarnings("unchecked") @Override public List<Artifact> searchRecommended(String searchTerm, Integer limit, Integer offset) throws ServiceException { FullTextQuery query = getSearchRecommendedQuery(searchTerm); if (query == null) { return Lists.newArrayListWithExpectedSize(0); } // Sort List<SortField> sortFields = ImmutableList.<SortField>builder() .add(new SortField(Binding.artifact().followersCount().getPath(), SortField.Type.LONG, true)) .add(new SortField(Binding.artifact().group().getPath() + '.' + ArtifactGroup.GROUP_ID_SORT_FIELD_NAME, SortField.Type.STRING)) .add(new SortField(Artifact.ARTIFACT_ID_SORT_FIELD_NAME, SortField.Type.STRING)) .build(); query.setSort(new Sort(sortFields.toArray(new SortField[sortFields.size()]))); if (offset != null) { query.setFirstResult(offset); } if (limit != null) { query.setMaxResults(limit); } return (List<Artifact>) query.getResultList(); }
@Override public List<?> searchEntriesForUserHelper(String userId, String field, String query, int startPosition, int maxResults) { if (userId == null || userId.isEmpty() || !idGenerator.isIdWellFormed(userId)) { return new ArrayList<Entry>(); } if (query == null) { return new ArrayList<Entry>(); } if (field == null) { return new ArrayList<Entry>(); } FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search .getFullTextEntityManager(getOrCreateEntityManager()); QueryBuilder qb = fullTextEntityManager.getSearchFactory() .buildQueryBuilder().forEntity(Entry.class).get(); org.apache.lucene.search.Query luceneQuery = qb .bool() .must(qb.keyword().onField(field).matching(query).createQuery()) .must(new TermQuery(new Term("userId", userId))).createQuery(); javax.persistence.Query jpaQuery = fullTextEntityManager .createFullTextQuery(luceneQuery, Entry.class) .setFirstResult(startPosition).setMaxResults(maxResults); return jpaQuery.getResultList(); }
public Object doInJpa(EntityManager em) throws PersistenceException { FullTextQuery fq = createSearchQuery(criteria, includeDisabled, em); fq.setSort(new Sort(new SortField[] { SortField.FIELD_SCORE, new SortField("birthDate", true) })); fq.setFirstResult(firstResult); fq.setMaxResults(maxResults); return fq.getResultList(); } });
@Override public Page<DataSource> searchByQuery(String query, Pageable pageable) { final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager); LOGGER.info("Query : {}, Pageable: {}", query, pageable); FullTextQuery fullTextQuery; try { final QueryParser queryParser = new QueryParser("content", fullTextEntityManager.getSearchFactory().getAnalyzer(DataSource.class)); fullTextQuery = fullTextEntityManager.createFullTextQuery(queryParser.parse(query), DataSource.class); } catch (ParseException e) { LOGGER.error("Fail to search query : {}", e.getMessage()); throw new RuntimeException("Fail to search query : " + e.getMessage()); } fullTextQuery.setFirstResult(pageable.getOffset()); fullTextQuery.setMaxResults(pageable.getPageSize()); fullTextQuery.setSort(getSearchSort(pageable)); LOGGER.debug("FullTextQuery : {}", fullTextQuery); return new PageImpl<>(fullTextQuery.getResultList(), pageable, fullTextQuery.getResultSize()); }
@Override public Page<Role> searchByQuery(String query, Pageable pageable) { final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager); FullTextQuery fullTextQuery; try { final QueryParser queryParser = new QueryParser("name", fullTextEntityManager.getSearchFactory().getAnalyzer(Role.class)); Query parsedQuery = queryParser.parse(query); LOGGER.debug("{}, Parsed {}", query, parsedQuery); fullTextQuery = fullTextEntityManager.createFullTextQuery(parsedQuery, Role.class); } catch (ParseException e) { e.printStackTrace(); throw new RuntimeException("Fail to search query : " + e.getMessage()); } fullTextQuery.setFirstResult(pageable.getOffset()); fullTextQuery.setMaxResults(pageable.getPageSize()); Sort sort = getSearchSort(pageable); LOGGER.debug("Sort : {}", Arrays.toString(sort.getSort())); if(sort.getSort().length > 0) { fullTextQuery.setSort(getSearchSort(pageable)); } return new PageImpl<>(fullTextQuery.getResultList(), pageable, fullTextQuery.getResultSize()); }
@Override public Page<User> searchByQuery(@Param("q") String query, Pageable pageable) { final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager); FullTextQuery fullTextQuery; try { final QueryParser queryParser = new QueryParser("content", fullTextEntityManager.getSearchFactory().getAnalyzer(User.class)); fullTextQuery = fullTextEntityManager.createFullTextQuery(queryParser.parse(query), User.class); } catch (ParseException e) { e.printStackTrace(); throw new RuntimeException("Fail to search query : " + e.getMessage()); } fullTextQuery.setFirstResult(pageable.getOffset()); fullTextQuery.setMaxResults(pageable.getPageSize()); fullTextQuery.setSort(getSearchSort(pageable)); return new PageImpl<>(fullTextQuery.getResultList(), pageable, fullTextQuery.getResultSize()); }
@Override public Page<PrDataset> searchByQuery(String query, Pageable pageable) { final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager); FullTextQuery fullTextQuery; try { final QueryParser queryParser = new QueryParser("content", fullTextEntityManager.getSearchFactory().getAnalyzer(PrDataset.class)); fullTextQuery = fullTextEntityManager.createFullTextQuery(queryParser.parse(query), PrDataset.class); } catch (ParseException e) { e.printStackTrace(); throw new RuntimeException("Fail to search query : " + e.getMessage()); } fullTextQuery.setFirstResult(pageable.getOffset()); fullTextQuery.setMaxResults(pageable.getPageSize()); return new PageImpl<>(fullTextQuery.getResultList(), pageable, fullTextQuery.getResultSize()); }
public Object doInJpa(EntityManager em) throws PersistenceException { FullTextEntityManager fullTextEntityManager = getFullTextEntityManager(em); MatchAllDocsQuery query = new MatchAllDocsQuery(); FullTextQuery fq = fullTextEntityManager.createFullTextQuery(query, Webbis.class); fq.enableFullTextFilter("enabledWebbis"); fq.setFirstResult(firstResult); fq.setMaxResults(maxResult); fq.setSort(new Sort(new SortField("birthTime", true))); fq.setHint("org.hibernate.cacheable", true); return fq.getResultList(); } });
@SuppressWarnings("unchecked") @Override public List<User> search(String searchTerm, Integer limit, Integer offset) { FullTextQuery query = getSearchQuery(searchTerm); query.setSort(new Sort(new SortField(Binding.user().userName().getPath(), SortField.Type.STRING))); if (offset != null) { query.setFirstResult(offset); } if (limit != null) { query.setMaxResults(limit); } return (List<User>) query.getResultList(); }
@Test @SuppressWarnings("unchecked") public void testResultOrderedByDateDescending() throws Exception { EntityTransaction tx = em.getTransaction(); tx.begin(); QueryBuilder builder = em.getSearchFactory().buildQueryBuilder().forEntity( ProductArticle.class ).get(); org.apache.lucene.search.Query query = builder.keyword().wildcard().onField( "header" ).matching( "hib*" ).createQuery(); Sort dateDescending = builder.sort().byField( "creationDate" ).desc().createSort(); List<ProductArticle> result = em.createFullTextQuery( query, ProductArticle.class ) .setSort( dateDescending ).setFirstResult( 3 ).getResultList(); assertThat( result ).as( "query result" ).hasSize( 3 ); assertThat( result.get( 0 ).getArticleId() ).as( "article id" ).isEqualTo( 3 ); assertThat( result.get( 1 ).getArticleId() ).as( "article id" ).isEqualTo( 2 ); assertThat( result.get( 2 ).getArticleId() ).as( "article id" ).isEqualTo( 1 ); tx.commit(); em.clear(); }
@Override public Page<User> searchByKeyword(@Param("q") String keywords, Pageable pageable) { if(StringUtils.isBlank(keywords)) { keywords = "*"; } // Must be retrieved inside a transaction to take part of final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager); // Prepare a search query builder final QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(User.class).get(); // This is a boolean junction... I'll add at least a keyword query final BooleanJunction<BooleanJunction> outer = queryBuilder.bool(); outer.must( queryBuilder .keyword() .wildcard() .onFields("username", "fullName") .matching(keywords) .createQuery() ); FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(outer.createQuery(), User.class); fullTextQuery.setFirstResult(pageable.getOffset()); fullTextQuery.setMaxResults(pageable.getPageSize()); fullTextQuery.setSort(getSearchSort(pageable)); return new PageImpl<>(fullTextQuery.getResultList(), pageable, fullTextQuery.getResultSize()); }
@Override @SuppressWarnings("unchecked") public SearchResult<Page> search(String term, int offset, int limit) { FullTextEntityManager fullTextEm = Search.getFullTextEntityManager( getEm() ); QueryBuilder queryBuilder = fullTextEm.getSearchFactory().buildQueryBuilder() .forEntity( Page.class ).get(); Query luceneQuery; if ( term == null || term.isEmpty() ) { luceneQuery = queryBuilder.all().createQuery(); } else { luceneQuery = queryBuilder.keyword() .onField( "title" ).boostedTo( 2.0f ) .andField( "content" ) .matching( term ) .createQuery(); } Sort scoreSort = queryBuilder.sort().byScore().createSort(); FullTextQuery query = fullTextEm.createFullTextQuery( luceneQuery, Page.class ) .setFirstResult( offset ) .setMaxResults( limit ) .setSort( scoreSort ); return new SearchResult<>( query.getResultSize(), query.getResultList() ); }
@Override public Page<Role> searchByKeyword(String keywords, Pageable pageable) { // Must be retrieved inside a transaction to take part of final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager); // Prepare a search query builder final QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Role.class).get(); // This is a boolean junction... I'll add at least a keyword query final BooleanJunction<BooleanJunction> outer = queryBuilder.bool(); outer.must( queryBuilder .keyword() .wildcard() .onFields("name") .matching(keywords) .createQuery() ); FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(outer.createQuery(), Role.class); fullTextQuery.setFirstResult(pageable.getOffset()); fullTextQuery.setMaxResults(pageable.getPageSize()); fullTextQuery.setSort(getSearchSort(pageable)); return new PageImpl<>(fullTextQuery.getResultList(), pageable, fullTextQuery.getResultSize()); }
@Override public Page<DataSource> searchByKeyword(String keywords, Pageable pageable) { // Must be retrieved inside a transaction to take part of final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager); // Prepare a search query builder final QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(DataSource.class).get(); // This is a boolean junction... I'll add at least a keyword query final BooleanJunction<BooleanJunction> outer = queryBuilder.bool(); outer.must( queryBuilder .keyword() .wildcard() .onFields("name", "description", "alias") .matching(keywords) .createQuery() ); FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(outer.createQuery(), DataSource.class); fullTextQuery.setFirstResult(pageable.getOffset()); fullTextQuery.setMaxResults(pageable.getPageSize()); fullTextQuery.setSort(getSearchSort(pageable)); return new PageImpl<>(fullTextQuery.getResultList(), pageable, fullTextQuery.getResultSize()); }