public LinkedList<QueryNode> getFieldQueryNodes(String field, String datatype, boolean positionIncrementsEnabled) throws QueryNodeException { final LinkedList<QueryNode> children = new LinkedList<QueryNode>(); int position = -1; // build children for (int i = 0; i < this.getNumTokens(); i++) { String term = this.getNextTerm(); final int positionIncrement = 1; final FieldQueryNode newFieldNode = new FieldQueryNode(field, term, -1, -1); // assign datatype newFieldNode.setTag(DatatypeQueryNode.DATATYPE_TAGID, datatype); // set position increment if (positionIncrementsEnabled) { position += positionIncrement; newFieldNode.setPositionIncrement(position); } else { newFieldNode.setPositionIncrement(i); } children.add(newFieldNode); } return children; }
@Override public TermQuery build(QueryNode queryNode) throws QueryNodeException { FieldQueryNode fieldNode = (FieldQueryNode) queryNode; return new TermQuery(new Term(fieldNode.getFieldAsString(), fieldNode .getTextAsString())); }
@Override protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException { if (node instanceof FieldQueryNode) { FieldQueryNode fqn = (FieldQueryNode) node; if (fqn.getField().toString().equals("*") && fqn.getText().toString().equals("*")) { return new MatchAllDocsQueryNode(); } } return node; }
final String text = fieldNode.getTextAsString(); final String field = fieldNode.getFieldAsString(); final FieldQueryNode newFieldNode = new FieldQueryNode(field, term, -1, -1); newFieldNode.setPositionIncrement(i); newFieldNode.setTag(DatatypeQueryNode.DATATYPE_TAGID, datatype); pq.add(newFieldNode);
@Override protected QueryNode preProcessNode(final QueryNode node) throws QueryNodeException { if (node instanceof TwigQueryNode) { node.add(new FieldQueryNode("field", "text", 0, 4)); } return node; } @Override
FieldQueryNode fieldNode = (FieldQueryNode) node; FieldConfig fieldConfig = config.getFieldConfig(fieldNode .getFieldAsString()); String text = fieldNode.getTextAsString(); Number number = null; throw new QueryNodeParseException(new MessageImpl( QueryParserMessages.COULD_NOT_PARSE_NUMBER, fieldNode .getTextAsString(), numberFormat.getClass() .getCanonicalName()), e); QueryParserMessages.NUMERIC_CANNOT_BE_EMPTY, fieldNode.getFieldAsString())); .getField(), number, numberFormat); NumericQueryNode upperNode = new NumericQueryNode(fieldNode .getField(), number, numberFormat);
List<datawave.query.language.tree.QueryNode> childrenList = new ArrayList<>(); FieldQueryNode quotedFieldNode = (QuotedFieldQueryNode) queryNode; String field = quotedFieldNode.getFieldAsString(); String selector = quotedFieldNode.getTextAsString(); UnescapedCharSequence origChars = (UnescapedCharSequence) fieldQueryNode.getText(); int nextWordStart = 0; ArrayList<String> words = new ArrayList<>(); String field = fieldNode.getFieldAsString(); UnescapedCharSequence seq = (UnescapedCharSequence) fieldNode.getText(); for (int x = 0; x < seq.length(); x++) { char c = seq.charAt(x);
@Override protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException { if (node instanceof TermRangeQueryNode) { TermRangeQueryNode rangeNode = (TermRangeQueryNode) node; FieldQueryNode lowerNode = rangeNode.getLowerBound(); FieldQueryNode upperNode = rangeNode.getUpperBound(); CharSequence lowerText = lowerNode.getText(); CharSequence upperText = upperNode.getText(); if (OPEN_RANGE_TOKEN.equals(upperNode.getTextAsString()) && (!(upperText instanceof UnescapedCharSequence) || !((UnescapedCharSequence) upperText) .wasEscaped(0))) { upperText = ""; } if (OPEN_RANGE_TOKEN.equals(lowerNode.getTextAsString()) && (!(lowerText instanceof UnescapedCharSequence) || !((UnescapedCharSequence) lowerText) .wasEscaped(0))) { lowerText = ""; } lowerNode.setText(lowerText); upperNode.setText(upperText); } return node; }
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 { // 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; } }
@Test public void testTwigQueryNodeParent() throws Exception { final TwigQueryNode twig = new TwigQueryNode(new WildcardNodeQueryNode(), new WildcardNodeQueryNode()); final FieldQueryNode term = new FieldQueryNode("field", "term", 0, 4); assertTrue(term.getParent() == null); assertEquals(twig, twig.getRoot().getParent()); assertEquals(twig, twig.getChild().getParent()); twig.setRoot(term); twig.setChild(term); assertEquals(twig, twig.getRoot().getParent()); assertEquals(twig, twig.getChild().getParent()); }
public JexlNode build(QueryNode queryNode) throws QueryNodeException { TermRangeQueryNode rangeNode = (TermRangeQueryNode) queryNode; FieldQueryNode lower = rangeNode.getLowerBound(); FieldQueryNode upper = rangeNode.getUpperBound(); boolean lowerWildcard = lower.getTextAsString().equals("*"); boolean upperWildcard = upper.getTextAsString().equals("*"); if (lowerWildcard && upperWildcard) { throw new QueryNodeException(new MessageImpl("Wildcard of lower and upper bouds not allowed")); } String field = rangeNode.getField().toString(); return new JexlRangeNode(field, lower.getTextAsString(), upper.getTextAsString(), rangeNode.isLowerInclusive(), rangeNode.isUpperInclusive()); }
@Override protected QueryNode postProcessNode(final QueryNode node) throws QueryNodeException { if (node instanceof FieldQueryNode && !(node.getParent() instanceof RangeQueryNode)) { final FieldQueryNode fieldNode = (FieldQueryNode) node; final Map<String, Analyzer> dts = this.getQueryConfigHandler().get(KeywordConfigurationKeys.DATATYPES_ANALYZERS); final Analyzer analyzer = dts.get(node.getTag(DatatypeQueryNode.DATATYPE_TAGID)); if (analyzer instanceof NumericAnalyzer) { final NumericAnalyzer na = (NumericAnalyzer) analyzer; final char[] text = fieldNode.getTextAsString().toCharArray(); final ReusableCharArrayReader textReader = new ReusableCharArrayReader(text); final Number number; try { number = na.getNumericParser().parse(textReader); } catch (final Exception e) { throw new QueryNodeParseException(new MessageImpl(QueryParserMessages.COULD_NOT_PARSE_NUMBER, text), e); } final CharSequence field = fieldNode.getField(); final NodeNumericQueryNode lowerNode = new NodeNumericQueryNode(field, number); final NodeNumericQueryNode upperNode = new NodeNumericQueryNode(field, number); return new NodeNumericRangeQueryNode(lowerNode, upperNode, true, true, na); } } return node; }
String part1 = lower.getTextAsString(); String part2 = upper.getTextAsString(); Date d1 = df.parse(part1); part1 = DateTools.dateToString(d1, dateRes); lower.setText(part1); upper.setText(part2);
@Override public QuotedFieldQueryNode cloneTree() throws CloneNotSupportedException { QuotedFieldQueryNode clone = (QuotedFieldQueryNode) super.cloneTree(); // nothing to do here return clone; }
@Override public MultiPhraseQuery build(QueryNode queryNode) throws QueryNodeException { MultiPhraseQueryNode phraseNode = (MultiPhraseQueryNode) queryNode; MultiPhraseQuery phraseQuery = new MultiPhraseQuery(); List<QueryNode> children = phraseNode.getChildren(); if (children != null) { TreeMap<Integer, List<Term>> positionTermMap = new TreeMap<>(); for (QueryNode child : children) { FieldQueryNode termNode = (FieldQueryNode) child; TermQuery termQuery = (TermQuery) termNode .getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID); List<Term> termList = positionTermMap.get(termNode .getPositionIncrement()); if (termList == null) { termList = new LinkedList<>(); positionTermMap.put(termNode.getPositionIncrement(), termList); } termList.add(termQuery.getTerm()); } for (int positionIncrement : positionTermMap.keySet()) { List<Term> termList = positionTermMap.get(positionIncrement); phraseQuery.add(termList.toArray(new Term[termList.size()]), positionIncrement); } } return phraseQuery; }
@Override public CharSequence getValue() { return getText(); }
field = fieldNode.getFieldAsString(); fieldNode.setField("");
final String field = fieldNode.getFieldAsString(); final String datatype = DatatypeProcessor.getDatatype(this.getQueryConfigHandler(), node); if (datatype == null) { fieldNode.setText(buffer.getFirstTerm()); return fieldNode;