@Override public PrefixQuery build(QueryNode queryNode) throws QueryNodeException { PrefixWildcardQueryNode wildcardNode = (PrefixWildcardQueryNode) queryNode; String text = wildcardNode.getText().subSequence(0, wildcardNode.getText().length() - 1).toString(); PrefixQuery q = new PrefixQuery(new Term(wildcardNode.getFieldAsString(), text)); MultiTermQuery.RewriteMethod method = (MultiTermQuery.RewriteMethod)queryNode.getTag(MultiTermRewriteMethodProcessor.TAG_ID); if (method != null) { q.setRewriteMethod(method); } return q; }
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); } // if it is tagged as a span query if (wildcardNode.getTag(QueryTypeProcessor.QUERYTYPE_TAG) == QueryTypeProcessor.SPAN_QUERYTYPE) { return new MultiTermSpanQuery<>(q); } else { return q; } }
PrefixWildcardQueryNode prefixWildcardQN = new PrefixWildcardQueryNode(fqn); return prefixWildcardQN;
PrefixWildcardQueryNode prefixWildcardQN = new PrefixWildcardQueryNode(fqn); return prefixWildcardQN;
public NodePrefixQuery 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)); final MultiNodeTermQuery.RewriteMethod method = (MultiNodeTermQuery.RewriteMethod)queryNode.getTag(MultiNodeTermRewriteMethodProcessor.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 PrefixQuery build(QueryNode queryNode) throws QueryNodeException { PrefixWildcardQueryNode wildcardNode = (PrefixWildcardQueryNode) queryNode; String text = wildcardNode.getText().subSequence(0, wildcardNode.getText().length() - 1).toString(); PrefixQuery q = new PrefixQuery(new Term(wildcardNode.getFieldAsString(), text)); MultiTermQuery.RewriteMethod method = (MultiTermQuery.RewriteMethod)queryNode.getTag(MultiTermRewriteMethodProcessor.TAG_ID); if (method != null) { q.setRewriteMethod(method); } return q; }