@Override public void extractTerms(final Set<Term> terms) { terms.add(this.getTerm()); }
public NodePhraseQuery build(final QueryNode queryNode) throws QueryNodeException { final TokenizedPhraseQueryNode phraseNode = (TokenizedPhraseQueryNode) queryNode; final NodePhraseQuery phraseQuery = new NodePhraseQuery(); final List<QueryNode> children = phraseNode.getChildren(); if (children != null) { for (final QueryNode child : children) { final NodeTermQuery termQuery = (NodeTermQuery) child .getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); final FieldQueryNode termNode = (FieldQueryNode) child; phraseQuery.add(termQuery.getTerm(), termNode.getPositionIncrement()); } } return phraseQuery; }
private void checkBooleanTerms(final NodeTermRangeQuery query, final String... terms) throws IOException { query.setRewriteMethod(new MultiNodeTermQuery.TopTermsScoringNodeBooleanQueryRewrite(50)); final NodeBooleanQuery bq = (NodeBooleanQuery) searcher.rewrite(query); final Set<String> allowedTerms = new HashSet<String>(Arrays.asList(terms)); assertEquals(allowedTerms.size(), bq.clauses().size()); for (final NodeBooleanClause c : bq.clauses()) { assertTrue(c.getQuery() instanceof NodeTermQuery); final NodeTermQuery tq = (NodeTermQuery) c.getQuery(); final String term = tq.getTerm().text(); assertTrue("invalid term: "+ term, allowedTerms.contains(term)); allowedTerms.remove(term); // remove to fail on double terms } assertEquals(0, allowedTerms.size()); }