private static Query createFilteredQuery( final Analyzer queryAnalyser, final Query keywordsQuery, final List<ListFilter> filters) { final BooleanQuery query = new BooleanQuery(); query.add(keywordsQuery, BooleanClause.Occur.MUST); for (final ListFilter filter : filters) { final StandardQueryParser queryParser = new StandardQueryParser(queryAnalyser); try { query.add( queryParser.parse(filter.getFilterValue(), null), isExclusion(filter) ? BooleanClause.Occur.MUST_NOT : BooleanClause.Occur.MUST); } catch (final QueryNodeException e) { throw new WrappedException("Erreur lors de la création du filtrage de la requete", e); } } return query; }
/** {@inheritDoc} */ @Override public DtListProcessor<D> filter(final ListFilter listFilter) { final Predicate<D> filter = new DtListPatternFilter<>(listFilter.getFilterValue()); return add(new FilterFunction<>(filter)); }
private static boolean isExclusion(final ListFilter listFilter) { final String listFilterValue = listFilter.getFilterValue().trim(); return listFilterValue.startsWith("-"); }