@Override public CharSequence toQueryString(EscapeQuerySyntax escapeSyntaxParser) { if (getChildren() == null || getChildren().size() == 0) return ""; StringBuilder sb = new StringBuilder(); String filler = ""; for (QueryNode child : getChildren()) { sb.append(filler).append(child.toQueryString(escapeSyntaxParser)); filler = ","; } return "[MTP[" + sb.toString() + "]]"; }
@Override public CharSequence toQueryString(EscapeQuerySyntax escapeSyntaxParser) { if (getChildren() == null || getChildren().size() == 0) return ""; StringBuilder sb = new StringBuilder(); String filler = ""; for (QueryNode child : getChildren()) { sb.append(filler).append(child.toQueryString(escapeSyntaxParser)); filler = ","; } return "[MTP[" + sb.toString() + "]]"; }
@Override public String toString() { if (getChildren() == null || getChildren().size() == 0) return "<multiPhrase/>"; StringBuilder sb = new StringBuilder(); sb.append("<multiPhrase>"); for (QueryNode child : getChildren()) { sb.append("\n"); sb.append(child.toString()); } sb.append("\n</multiPhrase>"); return sb.toString(); }
@Override public String toString() { if (getChildren() == null || getChildren().size() == 0) return "<multiPhrase/>"; StringBuilder sb = new StringBuilder(); sb.append("<multiPhrase>"); for (QueryNode child : getChildren()) { sb.append("\n"); sb.append(child.toString()); } sb.append("\n</multiPhrase>"); return sb.toString(); }
@Override public CharSequence getField() { List<QueryNode> children = getChildren(); if (children == null || children.size() == 0) { return null; } else { return ((FieldableNode) children.get(0)).getField(); } }
@Override public void setField(CharSequence fieldName) { List<QueryNode> children = getChildren(); if (children != null) { for (QueryNode child : children) { if (child instanceof FieldableNode) { ((FieldableNode) child).setField(fieldName); } } } }
@Override public CharSequence getField() { List<QueryNode> children = getChildren(); if (children == null || children.size() == 0) { return null; } else { return ((FieldableNode) children.get(0)).getField(); } }
@Override public void setField(CharSequence fieldName) { List<QueryNode> children = getChildren(); if (children != null) { for (QueryNode child : children) { if (child instanceof FieldableNode) { ((FieldableNode) child).setField(fieldName); } } } }
@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 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; }