@Override public BooleanClause clone(final BooleanQuery newParent, final Occur occur, final boolean generated) { final DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(newParent, occur, generated); for (final DisjunctionMaxClause clause : clauses) { dmq.addClause(clause.clone(dmq, generated)); } return dmq; }
@Override public DisjunctionMaxQuery visit(final DisjunctionMaxQuery disjunctionMaxQuery) { final DisjunctionMaxQuery newDMQ = new DisjunctionMaxQuery((BooleanQuery) getNewParent(), disjunctionMaxQuery.occur, true); newParentStack.add(newDMQ); for (final DisjunctionMaxClause clause : disjunctionMaxQuery.getClauses()) { newDMQ.addClause((DisjunctionMaxClause) clause.accept(this)); } newParentStack.removeLast(); return newDMQ; }
Query termsToQuery(String termsQuery) { Query query = new Query(); for (String t : termsQuery.split("\\s+")) { if (t.length() > 0) { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Occur.SHOULD, false); query.addClause(dmq); Term term = new Term(dmq, t); dmq.addClause(term); } } return query; }
protected void decompound(final Term term) { // determine the nodesToAdd based on the term try { for (final SuggestWord[] decompounded : suggestWordbreaks(term)) { if (decompounded != null && decompounded.length > 0) { final BooleanQuery bq = new BooleanQuery(term.getParent(), Clause.Occur.SHOULD, true); for (final SuggestWord word : decompounded) { final DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(bq, Clause.Occur.MUST, true); bq.addClause(dmq); dmq.addClause(new Term(dmq, term.getField(), word.string, true)); } nodesToAdd.add(bq); } } } catch (final IOException e) { // IO is broken, this looks serious -> throw as RTE throw new RuntimeException("Error decompounding " + term, e); } }
switch (status) { case TERM: { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery( query, occur, false); query.addClause(dmq); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery( query, Occur.SHOULD, false); query.addClause(dmq); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, occur, false); query.addClause(dmq); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery( query, Occur.SHOULD, false); query.addClause(dmq);
CharTermAttribute original = queryTokens.addAttribute(CharTermAttribute.class); while (queryTokens.incrementToken()) { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Occur.SHOULD, false); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Occur.SHOULD, false); dmq.addClause(new Term(dmq, input)); query.addClause(dmq);
private void addTerm(Query query, String field, String value) { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Clause.Occur.SHOULD, true); query.addClause(dmq); Term term = new Term(dmq, field, value); dmq.addClause(term); }
private void addTerm(Query query, String field, String value, boolean isGenerated) { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Clause.Occur.SHOULD, true); query.addClause(dmq); Term term = new Term(dmq, field, value, isGenerated); dmq.addClause(term); }
match.getParent().addClause(bq); for (final querqy.rewrite.commonrules.model.Term synTerm: synonym) { final DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(bq, Occur.MUST, true); bq.addClause(dmq); addSynonymTermToDisjunctionMaxQuery(dmq, synTerm, termMatches); final DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(bq, Occur.MUST, true); bq.addClause(dmq); addSynonymTermToDisjunctionMaxQuery(dmq, synTerm, termMatches);
add = new BooleanQuery(currentDmq, Occur.SHOULD, true); DisjunctionMaxQuery newDmq = new DisjunctionMaxQuery(add, Occur.MUST, true); newDmq.addClause(new Term(newDmq, new SimpleComparableCharSequence(scratchChars, start, i - start), true)); DisjunctionMaxQuery newDmq = new DisjunctionMaxQuery(add, Occur.MUST, true); newDmq.addClause(new Term(newDmq, new SimpleComparableCharSequence(scratchChars, start, scratchChars.length - start), true));
for (int i = 0; i < scratchChars.length; i++) { if (scratchChars[i] == ' ' && (i > start)) { DisjunctionMaxQuery newDmq = new DisjunctionMaxQuery(replaceSeq, Occur.MUST, true); newDmq.addClause( new Term(newDmq, DisjunctionMaxQuery newDmq = new DisjunctionMaxQuery(replaceSeq, Occur.MUST, true); newDmq.addClause(new Term(newDmq, new SimpleComparableCharSequence(scratchChars, start, scratchChars.length - start))); DisjunctionMaxQuery replaceDmq = new DisjunctionMaxQuery(add, Occur.MUST, true); replaceDmq.addClause(new Term(replaceDmq, new SimpleComparableCharSequence(scratchChars, 0, scratchChars.length))); DisjunctionMaxQuery neqDmq = new DisjunctionMaxQuery(neq, Occur.MUST, true); neqDmq.addClause(negTerm.clone(neqDmq, true)); neq.addClause(neqDmq);
@Override public Node visitTermQuery(TermQueryContext ctx) { BooleanQuery parent = booleanQueryStack.getLast(); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(parent, getOccur(), false); TermContext tc = ctx.getRuleContext(TermContext.class, 0); Token startToken = tc.getStart(); List<FieldNameContext> fieldNameContexts = ctx.getRuleContexts(FieldNameContext.class); if (fieldNameContexts != null && !fieldNameContexts.isEmpty()) { for (FieldNameContext fieldNameContext : fieldNameContexts) { String fieldName = fieldNameContext.getText(); dmq.addClause( new Term(dmq, fieldName, new SimpleComparableCharSequence(input, startToken.getStartIndex(), 1 + startToken.getStopIndex() - startToken.getStartIndex()))); } } else { dmq.addClause(new Term(dmq, new SimpleComparableCharSequence(input, startToken.getStartIndex(), 1 + startToken.getStopIndex() - startToken.getStartIndex()))); } parent.addClause(dmq); return dmq; }
@Test public void testThatGeneratedIsPropagatedToClauses() throws Exception { BooleanQuery bq = new BooleanQuery(null, SHOULD, false); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(bq, Clause.Occur.SHOULD, false); bq.addClause(dmq); dmq.addClause(new Term(dmq, "Test", false)); final BooleanQuery clone = (BooleanQuery) bq.clone(null, MUST, true); assertThat(clone, bq(must(), dmq(should(), term("Test", true)))); assertTrue(clone.isGenerated()); assertTrue(clone.getClauses().get(0).isGenerated()); assertEquals(MUST, clone.getOccur()); } }