.containsOne(Element.ALL_FIELD, values) .end().setLimit(WikittyQuery.MAX) .setWikittyFieldSearchDepth(wikittyFieldSearchDepth - 1);
Rule depth() { return Optional(space(), icDEPTH, FirstOf(EQUALS, space()), OneOrMore(AnyOf("1234567890")), push(((WikittyQuery)pop()).setWikittyFieldSearchDepth(toInt(match()))) ); }
/** * Parse et ajoute un bout de requete. Cette requete est prise comme une * condition terminal si l'on veut continuer a construire la requete, il * faut avoir ajouter avant une * {@link #and()}, {@link #or()}, {@link #not()}, {@link #containsOne()} * @param query la requete a ajouter (peut-etre vide ou nul, dans ce cas, la * condition utiliser est "true") * @param includeExtra copy offset, limit, depth found in query if true * @return {@code this} with the {@code c} restriction added. */ public M parse(String query, boolean includeExtra) { if (StringUtils.isNotBlank(query)) { WikittyQuery filter = WikittyQueryParser.parse(query); addCondition(filter.getCondition(), true); if (includeExtra) { WikittyQuery q = getQuery(); q.setOffset(filter.getOffset()); q.setLimit(filter.getLimit()); q.setWikittyFieldSearchDepth(filter.getWikittyFieldSearchDepth()); } } else { addCondition(new True()); } return this.asM(); }
@Override public boolean visitEnter(WikittyQuery o) { WikittyQuery q = getQuery(); q.setFacetExtension(q.isFacetExtension()); q.setFacetField(new ArrayList<Element>(o.getFacetField())); q.setFacetLimit(o.getFacetLimit()); q.setFacetMinCount(o.getFacetMinCount()); q.setOffset(o.getOffset()); q.setLimit(o.getLimit()); q.setFacetSort(o.getFacetSort()); q.setName(o.getName()); q.setSortAscending(new ArrayList<Element>(o.getSortAscending())); q.setSortDescending(new ArrayList<Element>(o.getSortDescending())); q.setWikittyFieldSearchDepth(o.getWikittyFieldSearchDepth()); for (FacetQuery c : o.getFacetQuery()) { WikittyQueryVisitorCopy v = new WikittyQueryVisitorCopy(); c.getCondition().accept(v); Condition condition = v.getCondition(); q.addFacetQuery(c.getName(), condition); } return true; }