/** * Wraps a {@link NodeQuery} into a {@link LuceneProxyNodeQuery}. * This method is applied on each clause of a {@link BooleanQuery}. */ private Query wrap(final Query q) throws QueryNodeException { if (q instanceof BooleanQuery) { for (final BooleanClause clause: ((BooleanQuery) q).clauses()) { final Query cq = clause.getQuery(); clause.setQuery(this.wrap(cq)); } return q; } else if (q instanceof NodeQuery) { return new LuceneProxyNodeQuery((NodeQuery) q); } else { throw new QueryNodeException(new Error("Expected a BooleanQuery or a NodeQuery: got '" + q.getClass().getCanonicalName() + "'")); } }
private void convertNestedSpans (BooleanQuery bq) { for (BooleanClause clause : bq.clauses()) { Query q = clause.getQuery(); Query converted = maybeConvert (q); if (converted != q) { clause.setQuery (converted); } } }
/** * Wraps a {@link NodeQuery} into a {@link LuceneProxyNodeQuery}. * This method is applied on each clause of a {@link BooleanQuery}. */ protected Query wrap(final Query q) throws QueryNodeException { if (q instanceof BooleanQuery) { for (final BooleanClause clause: ((BooleanQuery) q).clauses()) { final Query cq = clause.getQuery(); clause.setQuery(this.wrap(cq)); } return q; } else if (q instanceof NodeQuery) { return new LuceneProxyNodeQuery((NodeQuery) q); } else { throw new QueryNodeException(new Error("Expected a BooleanQuery or a NodeQuery: got '" + q.getClass().getCanonicalName() + "'")); } }
protected org.apache.lucene.search.Query getQuery( QueryParser parser, Map<String, String> filterParameters ) throws ParseException { String searchPhrase = getSearchPhrase( filterParameters ); org.apache.lucene.search.Query query = parser.parse( searchPhrase ); if ( filterParameters.containsKey( SearchConstants.FUZZY_PARAMETER ) && StringUtils.equals( filterParameters.get( SearchConstants.FUZZY_PARAMETER ), "1" ) ) { // should get a boolean query for keyword-based searches if ( query instanceof BooleanQuery ) { BooleanQuery booleanQuery = (BooleanQuery) query; for ( BooleanClause clause : booleanQuery.getClauses() ) { if ( clause.getQuery() instanceof TermQuery ) { TermQuery oldQuery = (TermQuery) clause.getQuery(); FuzzyQuery newQuery = new FuzzyQuery( oldQuery.getTerm() ); clause.setQuery( newQuery ); } } } else { LOGGER.debug( "Query was too complex for adding fuzzy. Expected BooleanQuery but ended up being of type {}", query.getClass().getName() ); } } return query; }
private Query replaceFields(Query query, String fieldName) { if (query instanceof PhraseQuery) { PhraseQuery pq = new PhraseQuery(); for (Term t : ((PhraseQuery)query).getTerms()) { if (t.field().equals(fieldName)) { return query; } pq.add (replaceField(fieldName, t)); } return pq; } if (query instanceof BooleanQuery) { for (BooleanClause clause : ((BooleanQuery)query).getClauses()) { clause.setQuery(replaceFields (clause.getQuery(), fieldName)); } return query; } if (query instanceof TermQuery) { TermQuery tq = (TermQuery)query; if (! tq.getTerm().field().equals(fieldName)) { return new TermQuery (new Term (fieldName, tq.getTerm().text().split(":")[1])); } } // MultiTermQuery ? return query; }
if (clause.getQuery() instanceof TermQuery) { TermQuery termQuery = (TermQuery) clause.getQuery(); clause.setQuery(new PrefixQuery(termQuery.getTerm()));
if( ! queryVisitor.visit(boolClause) ) continue; Query newQuery = accept( boolClause.getQuery(), queryVisitor ); boolClause.setQuery( newQuery );