private void addDisplayFilterInexact(QueryBuilder qb, BooleanJunction<?> bool, ValueSet.ConceptSetFilterComponent nextFilter) { Query textQuery = qb .phrase() .withSlop(2) .onField("myDisplay").boostedTo(4.0f) .andField("myDisplayEdgeNGram").boostedTo(2.0f) // .andField("myDisplayNGram").boostedTo(1.0f) // .andField("myDisplayPhonetic").boostedTo(0.5f) .sentence(nextFilter.getValue().toLowerCase()).createQuery(); bool.must(textQuery); }
private void addDisplayFilterExact(QueryBuilder qb, BooleanJunction<?> bool, ValueSet.ConceptSetFilterComponent nextFilter) { bool.must(qb.phrase().onField("myDisplay").sentence(nextFilter.getValue()).createQuery()); }
Integer pageSize) { QueryBuilder queryBuilder = getFullTextQueryBuilder(); MustJunction termination = queryBuilder.bool() .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()); BooleanJunction<BooleanJunction> tempJunction = queryBuilder.bool(); for (Integer categoryId : categoryIds) { tempJunction.should(new TermQuery(new Term("categoryId", categoryId.toString()))); termination.must(tempJunction.createQuery()); BooleanJunction<BooleanJunction> tempJunction = queryBuilder.bool(); for (String modelId : modelIds) { tempJunction.should(new TermQuery(new Term("modelId", modelId))); termination.must(tempJunction.createQuery()); FullTextQuery query = getFullTextQuery(termination.createQuery()); if ("publishDate".equals(orderField)) { Sort sort = new Sort(new SortField("publishDate", SortField.Type.LONG, true));
QueryBuilder qb = em.getSearchFactory().buildQueryBuilder().forEntity(ResourceTable.class).get(); BooleanJunction<?> bool = qb.bool(); bool.must(qb.keyword().onField("myResourceLinksField").matching(theReferencingPid.toString()).createQuery()); if (bool.isEmpty()) { return pids; bool.must(qb.keyword().onField("myResourceType").matching(theResourceName).createQuery()); Query luceneQuery = bool.createQuery();
QueryBuilder qb = em.getSearchFactory().buildQueryBuilder().forEntity(ResourceTable.class).get(); .phrase() .withSlop(2) .onField("myContentText").boostedTo(4.0f) .andField("myContentTextEdgeNGram").boostedTo(2.0f) .andField("myContentTextNGram").boostedTo(1.0f) .andField("myContentTextPhonetic").boostedTo(0.5f) .sentence(theText.toLowerCase()).createQuery(); Query query = qb.bool() .must(qb.keyword().onField("myResourceLinksField").matching(pid.toString()).createQuery()) .must(textQuery) .createQuery();
.phrase() .withSlop(2) .onField(theFieldName).boostedTo(4.0f) .sentence(terms.iterator().next().toLowerCase()).createQuery(); theBoolean.must(textQuery); } else { String joinedTerms = StringUtils.join(terms, ' '); theBoolean.must(theQueryBuilder.keyword().onField(theFieldName).matching(joinedTerms).createQuery());
private Query createQuery(QueryBuilder queryBuilder, String fieldName, String term) { return queryBuilder .keyword() .onField( fieldName ) .ignoreFieldBridge() .matching( term ) .createQuery(); }
TermContext keyword = buildQuery.keyword(); WildcardContext wildcard = keyword.wildcard(); String[] searchfields = Compound.getSearchfields(); TermMatchingContext onFields = wildcard.onField(searchfields[0]); for (int i = 1; i < searchfields.length; i++) onFields.andField(searchfields[i]); TermTermination matching = onFields.matching(input.toLowerCase()); Query query = matching.createQuery();
FacetManager facetManager = fullTextQuery.getFacetManager(); for (String facetField : facetFields) { FacetingRequest facetingRequest = queryBuilder.facet().name(facetField + FACET_NAME_SUFFIX).onField(facetField) .discrete().orderedBy(FacetSortOrder.COUNT_DESC).includeZeroCounts(false).maxFacetCount(facetCount) .createFacetingRequest(); facetManager.enableFaceting(facetingRequest);
Date startPublishDate, Date endPublishDate, String orderField, Integer pageIndex, Integer pageSize) { QueryBuilder queryBuilder = getFullTextQueryBuilder(); MustJunction termination = queryBuilder.bool() .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()); valueMap.put("modelId", Arrays.asList(modelIds)); FullTextQuery query = getFullTextQuery(termination.createQuery()); if ("publishDate".equals(orderField)) { Sort sort = new Sort(new SortField("publishDate", SortField.Type.LONG, true));
TermCodeSystemVersion csv = cs.getCurrentVersion(); FullTextEntityManager em = org.hibernate.search.jpa.Search.getFullTextEntityManager(myEntityManager); QueryBuilder qb = em.getSearchFactory().buildQueryBuilder().forEntity(TermConcept.class).get(); BooleanJunction<?> bool = qb.bool(); bool.must(qb.keyword().onField("myCodeSystemVersionPid").matching(csv.getPid()).createQuery()); bool.must(qb.keyword().onField("myParentPids").matching("" + code.getId()).createQuery()); } else { throw new InvalidRequestException("Don't know how to handle op=" + nextFilter.getOp() + " on property " + nextFilter.getProperty()); bool.must(query); bool.must(new TermsQuery(term)); Query luceneQuery = bool.createQuery();
FacetManager facetManager = fullTextQuery.getFacetManager(); for (String facetField : facetFields) { FacetingRequest facetingRequest = queryBuilder.facet().name(facetField + FACET_NAME_SUFFIX).onField(facetField) .discrete().orderedBy(FacetSortOrder.COUNT_DESC).includeZeroCounts(false).maxFacetCount(facetCount) .createFacetingRequest(); facetManager.enableFaceting(facetingRequest);
Integer pageSize) { QueryBuilder queryBuilder = getFullTextQueryBuilder(); MustJunction termination = queryBuilder.bool() .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()); BooleanJunction<BooleanJunction> tempJunction = queryBuilder.bool(); for (Integer categoryId : categoryIds) { tempJunction.should(new TermQuery(new Term("categoryId", categoryId.toString()))); termination.must(tempJunction.createQuery()); BooleanJunction<BooleanJunction> tempJunction = queryBuilder.bool(); for (String modelId : modelIds) { tempJunction.should(new TermQuery(new Term("modelId", modelId))); termination.must(tempJunction.createQuery()); FullTextQuery query = getFullTextQuery(termination.createQuery()); if ("publishDate".equals(orderField)) { Sort sort = new Sort(new SortField("publishDate", SortField.Type.LONG, true));
Date startPublishDate, Date endPublishDate, String orderField, Integer pageIndex, Integer pageSize) { QueryBuilder queryBuilder = getFullTextQueryBuilder(); MustJunction termination = queryBuilder.bool() .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()); valueMap.put("modelId", Arrays.asList(modelIds)); FullTextQuery query = getFullTextQuery(termination.createQuery()); if ("publishDate".equals(orderField)) { Sort sort = new Sort(new SortField("publishDate", SortField.Type.LONG, true));
@Override public boolean isDisabled() { Boolean retVal = ourDisabled; if (retVal == null) { retVal = new TransactionTemplate(myTxManager).execute(t -> { try { FullTextEntityManager em = org.hibernate.search.jpa.Search.getFullTextEntityManager(myEntityManager); em.getSearchFactory().buildQueryBuilder().forEntity(ResourceTable.class).get(); return Boolean.FALSE; } catch (Exception e) { ourLog.trace("FullText test failed", e); ourLog.debug("Hibernate Search (Lucene) appears to be disabled on this server, fulltext will be disabled"); return Boolean.TRUE; } }); ourDisabled = retVal; } assert retVal != null; return retVal; }