@Override public boolean evaluate(QueryEvaluationContext ctx) { boolean ret = false; LOGGER.debug("evaluate {}", operator); switch (operator) { case _and: ret = true; for (QueryEvaluator q : evaluators) { if (!q.evaluate(ctx)) { ret = false; break; } } break; case _or: ret = false; for (QueryEvaluator q : evaluators) { if (q.evaluate(ctx)) { ret = true; break; } } break; } ctx.setResult(ret); return ret; } }
@Override public boolean evaluate(QueryEvaluationContext ctx) { boolean ret = false; LOGGER.debug("evaluate {}", operator); switch (operator) { case _and: ret = true; for (QueryEvaluator q : evaluators) { if (!q.evaluate(ctx)) { ret = false; break; } } break; case _or: ret = false; for (QueryEvaluator q : evaluators) { if (q.evaluate(ctx)) { ret = true; break; } } break; } ctx.setResult(ret); return ret; } }
@Override public boolean evaluate(QueryEvaluationContext ctx) { boolean ret = false; LOGGER.debug("evaluate {}", operator); switch (operator) { case _and: ret = true; for (QueryEvaluator q : evaluators) { if (!q.evaluate(ctx)) { ret = false; break; } } break; case _or: ret = false; for (QueryEvaluator q : evaluators) { if (q.evaluate(ctx)) { ret = true; break; } } break; } ctx.setResult(ret); return ret; } }
public QueryEvaluationContext evaluate(JsonDoc doc) { QueryEvaluationContext ctx = new QueryEvaluationContext(doc.getRoot()); evaluate(ctx); return ctx; }
public QueryEvaluationContext evaluate(JsonDoc doc) { QueryEvaluationContext ctx = new QueryEvaluationContext(doc.getRoot()); evaluate(ctx); return ctx; }
public QueryEvaluationContext evaluate(JsonDoc doc) { QueryEvaluationContext ctx = new QueryEvaluationContext(doc.getRoot()); evaluate(ctx); return ctx; }
@Override public boolean evaluate(QueryEvaluationContext ctx) { LOGGER.debug("evaluate {}", operator); ctx.setResult(operator.apply(evaluator.evaluate(ctx))); return ctx.getResult(); } }
@Override public boolean evaluate(QueryEvaluationContext ctx) { LOGGER.debug("evaluate {}", operator); ctx.setResult(operator.apply(evaluator.evaluate(ctx))); return ctx.getResult(); } }
@Override public boolean evaluate(QueryEvaluationContext ctx) { LOGGER.debug("evaluate {}", operator); ctx.setResult(operator.apply(evaluator.evaluate(ctx))); return ctx.getResult(); } }
@Override public Stream<ResultDocument> stream() { return super.stream().filter(doc -> { boolean ret=qe.evaluate(doc.getDoc()).getResult(); if(ret&&recordResultSetSize) ctx.setMatchCount(ctx.getMatchCount()+1); return ret; }); } };
@Override public Stream<ResultDocument> stream() { return super.stream().filter(doc -> { boolean ret=qe.evaluate(doc.getDoc()).getResult(); if(ret&&recordResultSetSize) ctx.setMatchCount(ctx.getMatchCount()+1); return ret; }); } };
@Override protected Projection.Inclusion projectArray(Path p, QueryEvaluationContext ctx) { LOGGER.debug("Evaluating array query projection for {}", p); Path contextRoot = ctx.getPath(); QueryEvaluationContext nestedContext = ctx.getNestedContext(contextRoot.isEmpty() ? p : p.suffix(-contextRoot.numSegments())); if (query.evaluate(nestedContext)) { LOGGER.debug("query evaluates to true"); return isIncluded() ? Projection.Inclusion.explicit_inclusion : Projection.Inclusion.explicit_exclusion; } return isIncluded() ? Projection.Inclusion.explicit_exclusion : Projection.Inclusion.explicit_inclusion; } }
@Override protected Projection.Inclusion projectArray(Path p, QueryEvaluationContext ctx) { LOGGER.debug("Evaluating array query projection for {}", p); Path contextRoot = ctx.getPath(); QueryEvaluationContext nestedContext = ctx.getNestedContext(contextRoot.isEmpty() ? p : p.suffix(-contextRoot.numSegments())); if (query.evaluate(nestedContext)) { LOGGER.debug("query evaluates to true"); return isIncluded() ? Projection.Inclusion.explicit_inclusion : Projection.Inclusion.explicit_exclusion; } return isIncluded() ? Projection.Inclusion.explicit_exclusion : Projection.Inclusion.explicit_inclusion; } }
@Override public boolean evaluate(QueryEvaluationContext ctx) { boolean ret = false; JsonNode node = ctx.getNode(field); if (node instanceof ArrayNode) { ArrayNode array = (ArrayNode) node; int index = 0; QueryEvaluationContext nestedCtx = null; for (Iterator<JsonNode> itr = array.elements(); itr.hasNext();) { JsonNode arrayElem = itr.next(); if (index == 0) { nestedCtx = ctx.firstElementNestedContext(arrayElem, field); } else { nestedCtx.elementNestedContext(arrayElem, index); } if (ev.evaluate(nestedCtx)) { ret = true; } index++; } } ctx.setResult(ret); return ret; } }
ArrayNode destNode=null; for (ResultDocument childDoc : childDocs) { if (qeval.evaluate(childDoc.getDoc()).getResult()) { destNode=ensureDestNodeExists(parentDoc,destNode,destFieldName); destNode.add(childDoc.getDoc().getRoot());
@Override public boolean evaluate(QueryEvaluationContext ctx) { boolean ret = false; KeyValueCursor<Path, JsonNode> cursor = ctx.getNodes(field); while(cursor.hasNext()&&!ret) { cursor.next(); JsonNode node=cursor.getCurrentValue(); if (node instanceof ArrayNode) { ArrayNode array = (ArrayNode) node; int index = 0; QueryEvaluationContext nestedCtx = null; for (Iterator<JsonNode> itr = array.elements(); itr.hasNext();) { JsonNode arrayElem = itr.next(); if (index == 0) { nestedCtx = ctx.firstElementNestedContext(arrayElem, field); } else { nestedCtx.elementNestedContext(arrayElem, index); } if (ev.evaluate(nestedCtx)) { ret = true; } index++; } } } ctx.setResult(ret); return ret; } }
@Override protected Boolean projectArray(Path p, QueryEvaluationContext ctx) { Path contextRoot = ctx.getPath(); QueryEvaluationContext nestedContext = ctx.getNestedContext(contextRoot.isEmpty() ? p : p.suffix(-contextRoot.numSegments())); if (query.evaluate(nestedContext)) { setLastMatch(true); return isIncluded() ? Boolean.TRUE : Boolean.FALSE; } return null; } }
@Override public boolean evaluate(QueryEvaluationContext ctx) { boolean ret = false; KeyValueCursor<Path, JsonNode> cursor = ctx.getNodes(field); while(cursor.hasNext()&&!ret) { cursor.next(); JsonNode node=cursor.getCurrentValue(); if (node instanceof ArrayNode) { ArrayNode array = (ArrayNode) node; int index = 0; QueryEvaluationContext nestedCtx = null; for (Iterator<JsonNode> itr = array.elements(); itr.hasNext();) { JsonNode arrayElem = itr.next(); if (index == 0) { nestedCtx = ctx.firstElementNestedContext(arrayElem, field); } else { nestedCtx.elementNestedContext(arrayElem, index); } if (ev.evaluate(nestedCtx)) { ret = true; } index++; } } } ctx.setResult(ret); return ret; } }
private void associateDocsWithIndex(CompositeMetadata childMetadata, ResultDocument parentDoc, Path destFieldName, BindQuery binders, List<ResultDocument> childDocs, AssociationQuery aq, MemDocIndex childIndex) { LOGGER.debug("Associating docs using index"); QueryExpression boundQuery = binders.iterate(aq.getQuery()); LOGGER.debug("Association query:{}", boundQuery); QueryEvaluator qeval = QueryEvaluator.getInstance(boundQuery, childMetadata); AnalyzeQuery analyzer=new AnalyzeQuery(block.rootMd,aq.getReference()); analyzer.iterate(boundQuery); List<QueryFieldInfo> qfi=analyzer.getFieldInfo(); GetIndexLookupSpec gils=new GetIndexLookupSpec(qfi); LookupSpec ls=gils.iterate(boundQuery); LOGGER.debug("Lookup spec:"+ls); List<ResultDocument> docs=reorder(childDocs,childIndex.find(ls)); ArrayNode destNode=null; for (ResultDocument childDoc : docs) { if (qeval.evaluate(childDoc.getDoc()).getResult()) { destNode=ensureDestNodeExists(parentDoc,destNode,destFieldName); destNode.add(childDoc.getDoc().getRoot()); } } }
private void associateDocsWithIndex(CompositeMetadata childMetadata, ResultDocument parentDoc, Path destFieldName, BindQuery binders, List<ResultDocument> childDocs, AssociationQuery aq, MemDocIndex childIndex) { LOGGER.debug("Associating docs using index"); QueryExpression boundQuery = binders.iterate(aq.getQuery()); LOGGER.debug("Association query:{}", boundQuery); QueryEvaluator qeval = QueryEvaluator.getInstance(boundQuery, childMetadata); AnalyzeQuery analyzer=new AnalyzeQuery(block.rootMd,aq.getReference()); analyzer.iterate(boundQuery); List<QueryFieldInfo> qfi=analyzer.getFieldInfo(); GetIndexLookupSpec gils=new GetIndexLookupSpec(qfi); LookupSpec ls=gils.iterate(boundQuery); LOGGER.debug("Lookup spec:"+ls); List<ResultDocument> docs=reorder(childDocs,childIndex.find(ls)); ArrayNode destNode=null; for (ResultDocument childDoc : docs) { if (qeval.evaluate(childDoc.getDoc()).getResult()) { destNode=ensureDestNodeExists(parentDoc,destNode,destFieldName); destNode.add(childDoc.getDoc().getRoot()); } } }