@Override public PrefixWildcardQueryNode cloneTree() throws CloneNotSupportedException { PrefixWildcardQueryNode clone = (PrefixWildcardQueryNode) super.cloneTree(); // nothing to do here return clone; } }
@Override public CharSequence toQueryString(EscapeQuerySyntax escaper) { if (isDefaultField(this.field)) { return this.text; } else { return this.field + ":" + this.text; } }
@Override public WildcardQuery build(QueryNode queryNode) throws QueryNodeException { WildcardQueryNode wildcardNode = (WildcardQueryNode) queryNode; WildcardQuery q = new WildcardQuery(new Term(wildcardNode.getFieldAsString(), wildcardNode.getTextAsString())); MultiTermQuery.RewriteMethod method = (MultiTermQuery.RewriteMethod)queryNode.getTag(MultiTermRewriteMethodProcessor.TAG_ID); if (method != null) { q.setRewriteMethod(method); } return q; }
WildcardQueryNode wildcardQN = new WildcardQueryNode(fqn); return wildcardQN;
@Override protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException { if (node instanceof WildcardQueryNode) { WildcardQueryNode wildcardNode = (WildcardQueryNode) node; if (wildcardNode.getText().length() > 0) { // Validate if the wildcard was escaped if (UnescapedCharSequence.wasEscaped(wildcardNode.getText(), 0)) return node; switch (wildcardNode.getText().charAt(0)) { case '*': case '?': throw new QueryNodeException(new MessageImpl( QueryParserMessages.LEADING_WILDCARD_NOT_ALLOWED, node .toQueryString(new EscapeQuerySyntaxImpl()))); } } } return node; }
public NodeWildcardQuery build(final QueryNode queryNode) throws QueryNodeException { final WildcardQueryNode wildcardNode = (WildcardQueryNode) queryNode; final NodeWildcardQuery q = new NodeWildcardQuery(new Term(wildcardNode.getFieldAsString(), wildcardNode.getTextAsString())); final MultiNodeTermQuery.RewriteMethod method = (MultiNodeTermQuery.RewriteMethod)queryNode.getTag(MultiNodeTermRewriteMethodProcessor.TAG_ID); if (method != null) { q.setRewriteMethod(method); } return q; }
WildcardQueryNode wildcardQN = new WildcardQueryNode(fqn); return wildcardQN;
@Override protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException { if (node instanceof WildcardQueryNode) { WildcardQueryNode wildcardNode = (WildcardQueryNode) node; if (wildcardNode.getText().length() > 0) { // Validate if the wildcard was escaped if (UnescapedCharSequence.wasEscaped(wildcardNode.getText(), 0)) return node; switch (wildcardNode.getText().charAt(0)) { case '*': case '?': throw new QueryNodeException(new MessageImpl( QueryParserMessages.LEADING_WILDCARD_NOT_ALLOWED, node .toQueryString(new EscapeQuerySyntaxImpl()))); } } } return node; }
@Override public WildcardQuery build(QueryNode queryNode) throws QueryNodeException { WildcardQueryNode wildcardNode = (WildcardQueryNode) queryNode; WildcardQuery q = new WildcardQuery(new Term(wildcardNode.getFieldAsString(), wildcardNode.getTextAsString())); MultiTermQuery.RewriteMethod method = (MultiTermQuery.RewriteMethod)queryNode.getTag(MultiTermRewriteMethodProcessor.TAG_ID); if (method != null) { q.setRewriteMethod(method); } return q; }
@Override protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException { // the old Lucene Parser ignores FuzzyQueryNode that are also PrefixWildcardQueryNode or WildcardQueryNode // we do the same here, also ignore empty terms if (node instanceof FieldQueryNode || node instanceof FuzzyQueryNode) { FieldQueryNode fqn = (FieldQueryNode) node; CharSequence text = fqn.getText(); // do not process wildcards for TermRangeQueryNode children and // QuotedFieldQueryNode to reproduce the old parser behavior if (fqn.getParent() instanceof TermRangeQueryNode || fqn instanceof QuotedFieldQueryNode || text.length() <= 0) { // Ignore empty terms return node; } // Code below simulates the old lucene parser behavior for wildcards if (isWildcard(text)) { if (isPrefixWildcard(text)) { return new PrefixWildcardQueryNode(fqn.getField(), text, fqn.getBegin(), fqn.getEnd()); } else { return new WildcardQueryNode(fqn.getField(), text, fqn.getBegin(), fqn.getEnd()); } } } return node; }
@Override public PrefixWildcardQueryNode cloneTree() throws CloneNotSupportedException { PrefixWildcardQueryNode clone = (PrefixWildcardQueryNode) super.cloneTree(); // nothing to do here return clone; } }
@Override public CharSequence toQueryString(EscapeQuerySyntax escaper) { if (isDefaultField(this.field)) { return this.text; } else { return this.field + ":" + this.text; } }
public NodeWildcardQuery build(final QueryNode queryNode) throws QueryNodeException { final WildcardQueryNode wildcardNode = (WildcardQueryNode) queryNode; final NodeWildcardQuery q = new NodeWildcardQuery(new Term(wildcardNode.getFieldAsString(), wildcardNode.getTextAsString())); final MultiNodeTermQuery.RewriteMethod method = (MultiNodeTermQuery.RewriteMethod) queryNode.getTag(MultiNodeTermRewriteMethodProcessor.TAG_ID); if (method != null) { q.setRewriteMethod(method); } // assign the datatype. We must always have a datatype assigned. q.setDatatype((String) queryNode.getTag(DatatypeQueryNode.DATATYPE_TAGID)); return q; }