.must(queryBuilder.keyword().onFields(CommonUtils.empty(tagId) ? textFields : tagFields) .matching(CommonUtils.empty(tagId) ? text : tagId).createQuery()) .must(new TermQuery(new Term("siteId", siteId.toString()))); if (null != startPublishDate) { termination.must(queryBuilder.range().onField("publishDate").above(startPublishDate).createQuery()); termination.must(queryBuilder.range().onField("publishDate").below(endPublishDate).createQuery());
.must(queryBuilder.keyword().onFields(CommonUtils.empty(tagId) ? textFields : tagFields) .matching(CommonUtils.empty(tagId) ? text : tagId).createQuery()) .must(new TermQuery(new Term("siteId", siteId.toString()))); if (null != startPublishDate) { termination.must(queryBuilder.range().onField("publishDate").above(startPublishDate).createQuery()); termination.must(queryBuilder.range().onField("publishDate").below(endPublishDate).createQuery());
.must(queryBuilder.keyword().onFields(CommonUtils.empty(tagIds) ? textFields : tagFields) .matching(CommonUtils.empty(tagIds) ? text : tagIds).createQuery()) .must(new TermQuery(new Term("siteId", siteId.toString()))); if (null != startPublishDate) { termination.must(queryBuilder.range().onField("publishDate").above(startPublishDate).createQuery()); termination.must(queryBuilder.range().onField("publishDate").below(endPublishDate).createQuery()); tempJunction.should(new TermQuery(new Term("categoryId", categoryId.toString()))); termination.must(tempJunction.createQuery()); tempJunction.should(new TermQuery(new Term("modelId", modelId))); termination.must(tempJunction.createQuery());
.must(queryBuilder.keyword().onFields(CommonUtils.empty(tagIds) ? textFields : tagFields) .matching(CommonUtils.empty(tagIds) ? text : tagIds).createQuery()) .must(new TermQuery(new Term("siteId", siteId.toString()))); if (null != startPublishDate) { termination.must(queryBuilder.range().onField("publishDate").above(startPublishDate).createQuery()); termination.must(queryBuilder.range().onField("publishDate").below(endPublishDate).createQuery()); tempJunction.should(new TermQuery(new Term("categoryId", categoryId.toString()))); termination.must(tempJunction.createQuery()); tempJunction.should(new TermQuery(new Term("modelId", modelId))); termination.must(tempJunction.createQuery());
.must(textQuery) .createQuery();
@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(); }
.must(textQuery) .createQuery();
@Override public List<Artifact> searchAutocompleteWithoutProject(String searchPattern, Integer limit, Integer offset) throws ServiceException { String[] searchFields = new String[] { Binding.artifact().artifactId().getPath(), Binding.artifact().group().groupId().getPath() }; QueryBuilder queryBuilder = Search.getFullTextEntityManager(getEntityManager()).getSearchFactory().buildQueryBuilder() .forEntity(Artifact.class).get(); Query notDeprecatedQuery = queryBuilder.keyword().onField(Binding.artifact().deprecationStatus().getPath()).matching(ArtifactDeprecationStatus.NORMAL).createQuery(); Query withoutProjectQuery = queryBuilder.keyword().onField(Binding.artifact().project().getPath()).matching(null).createQuery(); BooleanJunction<?> booleanJunction = queryBuilder.bool() .must(notDeprecatedQuery) .must(withoutProjectQuery); 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(); Sort sort = new Sort(sortFields.toArray(new SortField[sortFields.size()])); return hibernateSearchService.searchAutocomplete(getObjectClass(), searchFields, searchPattern, booleanJunction.createQuery(), limit, offset, sort); }
@Test public void testNumericFieldWithBigDecimals() throws Exception { Session session = openSession(); Transaction tx = session.beginTransaction(); // create entities Item item = new Item(); item.setPrice( new BigDecimal( 154.34 ) ); session.save( item ); tx.commit(); tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); QueryBuilder queryBuilder = fullTextSession.getSearchFactory() .buildQueryBuilder() .forEntity( Item.class ) .get(); Query rootQuery = queryBuilder.bool() .must( queryBuilder.range().onField( "price" ).above( 10000L ).createQuery() ) .must( queryBuilder.range().onField( "price" ).below( 20000L ).createQuery() ) .createQuery(); @SuppressWarnings( "unchecked" ) List<Item> resultList = fullTextSession.createFullTextQuery( rootQuery, Item.class ).list(); assertNotNull( resultList ); assertEquals( 1, resultList.size() ); tx.commit(); session.close(); }
@Test @TestForIssue(jiraKey = "HSEARCH-2565") public void testBooleanWithNullClauses() throws Exception { final QueryBuilder monthQb = helper.queryBuilder( Month.class ); // must/should with null clauses Query query = monthQb .bool() .must( null ) .must( monthQb.keyword().onField( "mythology" ).matching( "colder" ).createQuery() ) .should( null ) .createQuery(); Assert.assertThat( query, CoreMatchers.instanceOf( BooleanQuery.class ) ); Assert.assertEquals( 1, ( (BooleanQuery) query ).clauses().size() ); helper.assertThat( query ).from( Month.class ).matchesExactlyIds( 1 ); // must not / filter with null clauses query = monthQb .bool() .must( null ).not() .must( null ).disableScoring() .must( monthQb.keyword().onField( "mythology" ).matching( "colder" ).createQuery() ) .createQuery(); Assert.assertThat( query, CoreMatchers.instanceOf( BooleanQuery.class ) ); Assert.assertEquals( 1, ( (BooleanQuery) query ).clauses().size() ); helper.assertThat( query ).from( Month.class ).matchesExactlyIds( 1 ); }
@Test public void must_mustNot() { QueryBuilder queryBuilder = helper.queryBuilder( IndexedEntity.class ); HSQuery query = helper.hsQuery( queryBuilder.bool() .must( queryBuilder.keyword().onField( "field1" ).matching( FIELD1_VALUE1 ).createQuery() ) .must( queryBuilder.keyword().onField( "field1" ).matching( FIELD1_VALUE1 ).createQuery() ).not() .createQuery() ); helper.assertThat( query ).matchesNone(); query = helper.hsQuery( queryBuilder.bool() .must( queryBuilder.keyword().onField( "field1" ).matching( FIELD1_VALUE1 ).createQuery() ) .must( queryBuilder.keyword().onField( "field1" ).matching( FIELD1_VALUE2 ).createQuery() ).not() .createQuery() ); helper.assertThat( query ) .matchesUnorderedIds( DOCUMENT_1 ); }
@Test public void must() { QueryBuilder queryBuilder = helper.queryBuilder( IndexedEntity.class ); HSQuery query = helper.hsQuery( queryBuilder.bool() .must( queryBuilder.keyword().onField( "field1" ).matching( FIELD1_VALUE1 ).createQuery() ) .createQuery() ); helper.assertThat( query ) .matchesUnorderedIds( DOCUMENT_1 ); query = helper.hsQuery( queryBuilder.bool() .must( queryBuilder.keyword().onField( "field1" ).matching( FIELD1_VALUE1 ).createQuery() ) .must( queryBuilder.keyword().onField( "field2" ).matching( FIELD2_VALUE2 ).createQuery() ) .createQuery() ); helper.assertThat( query ).matchesNone(); query = helper.hsQuery( queryBuilder.bool() .must( queryBuilder.keyword().onField( "field1" ).matching( FIELD1_VALUE1 ).createQuery() ) .must( queryBuilder.keyword().onField( "field2" ).matching( FIELD2_VALUE1 ).createQuery() ) .createQuery() ); helper.assertThat( query ) .matchesUnorderedIds( DOCUMENT_1 ); }