List of usage examples for org.apache.lucene.queryparser.flexible.core.nodes QueryNode getTag
public Object getTag(String tagName);
From source file:com.sindicetech.siren.qparser.keyword.builders.AnyQueryNodeBuilder.java
License:Open Source License
public BooleanQuery build(QueryNode queryNode) throws QueryNodeException { AnyQueryNode andNode = (AnyQueryNode) queryNode; BooleanQuery bQuery = new BooleanQuery(); List<QueryNode> children = andNode.getChildren(); if (children != null) { for (QueryNode child : children) { Object obj = child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); if (obj != null) { Query query = (Query) obj; try { bQuery.add(query, BooleanClause.Occur.SHOULD); } catch (TooManyClauses ex) { throw new QueryNodeException(new MessageImpl( /* * IQQQ.Q0028E_TOO_MANY_BOOLEAN_CLAUSES, * BooleanQuery.getMaxClauseCount() *///from ww w . j ava 2 s . com QueryParserMessages.EMPTY_MESSAGE), ex); } } } } bQuery.setMinimumNumberShouldMatch(andNode.getMinimumMatchingElements()); return bQuery; }
From source file:com.sindicetech.siren.qparser.keyword.builders.ArrayQueryNodeBuilder.java
License:Open Source License
@Override public Query build(final QueryNode queryNode) throws QueryNodeException { final ArrayQueryNode arrayNode = (ArrayQueryNode) queryNode; final List<QueryNode> children = arrayNode.getChildren(); final ArrayQuery arrayQuery = new ArrayQuery(); for (final QueryNode child : children) { final Object v = child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); if (v == null) { // DummyNode such as the EmptyNodeQueryNode continue; }/*from ww w . j a va2 s . c om*/ if (v instanceof Query) { if (v instanceof ArrayQuery) { /* * Nested array query. It is transformed as a TwigQuery with empty root */ final TwigQuery twigQuery = new TwigQuery(); for (final Query qn : ((ArrayQuery) v).getElements()) { final NodeQuery valQuery = (NodeQuery) qn; twigQuery.addChild(valQuery, NodeQueryBuilderUtil.getModifierValue(child, NodeBooleanClause.Occur.MUST)); } arrayQuery.addElement(twigQuery); } else { arrayQuery.addElement((NodeQuery) v); } } else { throw new QueryNodeException(new MessageImpl(QueryParserMessages.INVALID_SYNTAX, "Unexpected class of a Twig Query clause: " + v == null ? "null" : v.getClass().getName())); } } return arrayQuery; }
From source file:com.sindicetech.siren.qparser.keyword.builders.BooleanQueryNodeBuilder.java
License:Open Source License
public Query build(final QueryNode queryNode) throws QueryNodeException { final BooleanQueryNode booleanNode = (BooleanQueryNode) queryNode; final BooleanQuery bQuery = new BooleanQuery(); final List<QueryNode> children = booleanNode.getChildren(); if (children != null) { for (final QueryNode child : children) { final Object obj = child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); if (obj != null) { final Query query = (Query) obj; try { final QueryNode mod; if (child instanceof DatatypeQueryNode) { mod = ((DatatypeQueryNode) child).getChild(); } else { mod = child;//from w w w . j ava 2s .c om } bQuery.add(query, getModifierValue(mod)); } catch (final TooManyClauses ex) { throw new QueryNodeException(new MessageImpl(QueryParserMessages.TOO_MANY_BOOLEAN_CLAUSES, BooleanQuery.getMaxClauseCount(), queryNode.toQueryString(new EscapeQuerySyntaxImpl())), ex); } } } } return bQuery; }
From source file:com.sindicetech.siren.qparser.keyword.builders.BoostQueryNodeBuilder.java
License:Open Source License
public Query build(final QueryNode queryNode) throws QueryNodeException { final BoostQueryNode boostNode = (BoostQueryNode) queryNode; final QueryNode child = boostNode.getChild(); if (child == null) { return null; }/*from www.j a va 2 s. c o m*/ final Query query = (Query) child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); query.setBoost(boostNode.getValue()); return query; }
From source file:com.sindicetech.siren.qparser.keyword.builders.FieldQueryNodeBuilder.java
License:Open Source License
public NodeQuery build(QueryNode queryNode) throws QueryNodeException { final FieldQueryNode fieldNode = (FieldQueryNode) queryNode; // if it is tagged as a span query if (fieldNode.getTag(QueryTypeProcessor.QUERYTYPE_TAG) == QueryTypeProcessor.SPAN_QUERYTYPE) { // create the term span query TermSpanQuery tsq = new TermSpanQuery( new Term(fieldNode.getFieldAsString(), fieldNode.getTextAsString())); // assign the datatype. We must always have a datatype assigned. tsq.setDatatype((String) queryNode.getTag(DatatypeQueryNode.DATATYPE_TAGID)); return tsq; } else {//from w ww . ja v a 2s . c o m // create the node term query NodeTermQuery ntq = new NodeTermQuery( new Term(fieldNode.getFieldAsString(), fieldNode.getTextAsString())); // assign the datatype. We must always have a datatype assigned. ntq.setDatatype((String) queryNode.getTag(DatatypeQueryNode.DATATYPE_TAGID)); return ntq; } }
From source file:com.sindicetech.siren.qparser.keyword.builders.NodeBooleanQueryNodeBuilder.java
License:Open Source License
public NodeQuery build(final QueryNode queryNode) throws QueryNodeException { final NodeBooleanQueryNode booleanNode = (NodeBooleanQueryNode) queryNode; final List<QueryNode> children = booleanNode.getChildren(); final NodeBooleanQuery bq = new NodeBooleanQuery(); if (children == null) { return bq; // return empty boolean query }//w w w .j a v a 2 s .c om // If more than one child, wrap them into a NodeBooleanQuery if (children.size() > 1) { for (final QueryNode child : children) { final Object obj = child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); if (obj != null) { if (obj instanceof NodeQuery) { final QueryNode mod; if (child instanceof DatatypeQueryNode) { mod = ((DatatypeQueryNode) child).getChild(); } else { mod = child; } bq.add((NodeQuery) obj, NodeQueryBuilderUtil.getModifierValue(mod, NodeBooleanClause.Occur.SHOULD)); } else { throw new QueryNodeException( new Error("Expected NodeQuery: got '" + obj.getClass().getCanonicalName() + "'")); } } } return bq; } // If only one child, return it directly else { final Object obj = children.get(0).getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); if (obj != null) { if (obj instanceof NodeQuery) { return (NodeQuery) obj; } else { throw new QueryNodeException( new Error("Non NodeQuery query '" + obj.getClass().getCanonicalName() + "' received")); } } return bq; // return empty boolean query } }
From source file:com.sindicetech.siren.qparser.keyword.builders.NodeFuzzyQueryNodeBuilder.java
License:Open Source License
public NodeQuery build(QueryNode queryNode) throws QueryNodeException { FuzzyQueryNode fuzzyNode = (FuzzyQueryNode) queryNode; String text = fuzzyNode.getTextAsString(); int numEdits = FuzzyQuery.floatToEdits(fuzzyNode.getSimilarity(), text.codePointCount(0, text.length())); NodeFuzzyQuery fuzzyQuery = new NodeFuzzyQuery( new Term(fuzzyNode.getFieldAsString(), fuzzyNode.getTextAsString()), numEdits, fuzzyNode.getPrefixLength()); // assign the datatype. We must always have a datatype assigned. fuzzyQuery.setDatatype((String) queryNode.getTag(DatatypeQueryNode.DATATYPE_TAGID)); // if it is tagged as a span query if (fuzzyNode.getTag(QueryTypeProcessor.QUERYTYPE_TAG) == QueryTypeProcessor.SPAN_QUERYTYPE) { return new MultiTermSpanQuery<>(fuzzyQuery); } else {/* w w w. j av a 2 s .c o m*/ return fuzzyQuery; } }
From source file:com.sindicetech.siren.qparser.keyword.builders.NodeNumericRangeQueryNodeBuilder.java
License:Open Source License
public NodeNumericRangeQuery<? extends Number> build(final QueryNode queryNode) throws QueryNodeException { final NodeNumericRangeQueryNode numericRangeNode = (NodeNumericRangeQueryNode) queryNode; final NumericQueryNode lowerNumericNode = numericRangeNode.getLowerBound(); final NumericQueryNode upperNumericNode = numericRangeNode.getUpperBound(); final Number lowerNumber, upperNumber; if (lowerNumericNode != null) { lowerNumber = lowerNumericNode.getValue(); } else {/*from w w w . j a v a 2s. c om*/ lowerNumber = null; } if (upperNumericNode != null) { upperNumber = upperNumericNode.getValue(); } else { upperNumber = null; } final NumericAnalyzer numericAnalyzer = numericRangeNode.getNumericAnalyzer(); final NumericType numberType = numericRangeNode.getNumericType(); final String field = numericRangeNode.getField().toString(); final boolean minInclusive = numericRangeNode.isLowerInclusive(); final boolean maxInclusive = numericRangeNode.isUpperInclusive(); final int precisionStep = numericAnalyzer.getPrecisionStep(); NodeNumericRangeQuery query = this.newNodeNumericRangeQuery(numberType, field, precisionStep, lowerNumber, upperNumber, minInclusive, maxInclusive); // assign the datatype. We must always have a datatype assigned. query.setDatatype((String) queryNode.getTag(DatatypeQueryNode.DATATYPE_TAGID)); return query; }
From source file:com.sindicetech.siren.qparser.keyword.builders.NodePhraseQueryNodeBuilder.java
License:Open Source License
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 (QueryNode child : children) { // the query node should always be a FieldQueryNode assert child instanceof FieldQueryNode; final FieldQueryNode termNode = (FieldQueryNode) child; final NodeTermQuery termQuery = (NodeTermQuery) child .getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); phraseQuery.add(termQuery.getTerm(), termNode.getPositionIncrement()); }/* w w w. j ava2s .c o m*/ } // assign the datatype. We must always have a datatype assigned. phraseQuery.setDatatype((String) queryNode.getTag(DatatypeQueryNode.DATATYPE_TAGID)); return phraseQuery; }
From source file:com.sindicetech.siren.qparser.keyword.builders.NodePrefixWildcardQueryNodeBuilder.java
License:Open Source License
public NodeQuery build(final QueryNode queryNode) throws QueryNodeException { final PrefixWildcardQueryNode wildcardNode = (PrefixWildcardQueryNode) queryNode; final String text = wildcardNode.getText().subSequence(0, wildcardNode.getText().length() - 1).toString(); final NodePrefixQuery q = new NodePrefixQuery(new Term(wildcardNode.getFieldAsString(), text)); // assign the datatype. We must always have a datatype assigned. q.setDatatype((String) queryNode.getTag(DatatypeQueryNode.DATATYPE_TAGID)); final MultiNodeTermQuery.RewriteMethod method = (MultiNodeTermQuery.RewriteMethod) queryNode .getTag(MultiNodeTermRewriteMethodProcessor.TAG_ID); if (method != null) { q.setRewriteMethod(method);/* w ww. j a va2s .c om*/ } // if it is tagged as a span query if (wildcardNode.getTag(QueryTypeProcessor.QUERYTYPE_TAG) == QueryTypeProcessor.SPAN_QUERYTYPE) { return new MultiTermSpanQuery<>(q); } else { return q; } }