private static void VisitQuery <T>(T qd, IQueryVisitor visitor, Action <IQueryVisitor, T> scoped) where T : class, IQuery { if (qd == null) { return; } visitor.Depth = visitor.Depth + 1; visitor.Visit(qd); scoped(visitor, qd); visitor.Depth = visitor.Depth - 1; }
private static void AcceptFilter <T>(T fd, IQueryVisitor visitor, Action <IQueryVisitor, T> scoped) where T : class, IFilter { if (fd == null) { return; } visitor.Depth = visitor.Depth + 1; visitor.Visit(fd); scoped(visitor, fd); visitor.Depth = visitor.Depth - 1; }
private static void VisitSpanSubQuery <T>(T qd, IQueryVisitor visitor, Action <IQueryVisitor, T> scoped) where T : class, ISpanSubQuery { if (qd == null) { return; } VisitQuery(qd, visitor, (v, d) => { visitor.Visit(qd); scoped(v, d); }); }
/// <inheritdoc /> public T Accept <T>(IQueryVisitor <IDistributedQueryAtom, T> visitor) => visitor.Visit(this);
/// <inheritdoc /> public T Accept <T>(IQueryVisitor <IVoucherQueryAtom, T> visitor) => visitor.Visit(this);
public T Accept <T>(IQueryVisitor <IDetailQueryAtom, T> visitor) => visitor.Visit(this);
public void Walk(IQueryContainer qd, IQueryVisitor visitor) { visitor.Visit(qd); AcceptQuery(qd.MatchAllQuery, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.MoreLikeThis, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.MultiMatch, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.CommonTerms, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Fuzzy, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.FuzzyLikeThis, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.GeoShape, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Ids, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Prefix, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.QueryString, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Range, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Regexp, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.SimpleQueryString, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.SpanFirst, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.SpanNear, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.SpanNot, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.SpanOr, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.SpanTerm, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Term, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Terms, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Wildcard, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Match, visitor, (v, d) => v.Visit(d)); AcceptQuery(qd.Bool, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Must, VisitorScope.Must); this.Accept(v, d.MustNot, VisitorScope.MustNot); this.Accept(v, d.Should, VisitorScope.Should); }); AcceptQuery(qd.Boosting, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.PositiveQuery, VisitorScope.PositiveQuery); this.Accept(v, d.NegativeQuery, VisitorScope.NegativeQuery); }); AcceptQuery(qd.ConstantScore, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); this.Accept(v, d.Filter); }); AcceptQuery(qd.CustomBoostFactor, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); }); AcceptQuery(qd.CustomFiltersScore, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); //TODO loop over filters or implement accept on them individually }); AcceptQuery(qd.CustomScore, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); }); AcceptQuery(qd.DisMax, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Queries); }); AcceptQuery(qd.Filtered, visitor, (v, d) => { visitor.Visit(d); this.Accept(v, d.Query); this.Accept(v, d.Filter); }); AcceptQuery(qd.FunctionScore, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); //TODO loop over qd.FunctionScore.Functions; }); AcceptQuery(qd.HasChild, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); }); AcceptQuery(qd.HasParent, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); }); AcceptQuery(qd.Indices, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); this.Accept(v, d.NoMatchQuery, VisitorScope.NoMatchQuery); }); AcceptQuery(qd.Nested, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); this.Accept(v, d.Filter); }); AcceptQuery(qd.TopChildren, visitor, (v, d) => { v.Visit(d); this.Accept(v, d.Query); }); }
public void Walk(IQueryContainer qd, IQueryVisitor visitor) { visitor.Visit(qd); VisitQuery(qd.MatchAll, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.MatchNone, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.MoreLikeThis, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.MultiMatch, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.CommonTerms, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Fuzzy, visitor, (v, d) => { v.Visit(d); VisitQuery(d as IFuzzyStringQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IFuzzyNumericQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IFuzzyDateQuery, visitor, (vv, dd) => v.Visit(dd)); }); VisitQuery(qd.Range, visitor, (v, d) => { v.Visit(d); VisitQuery(d as IDateRangeQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as INumericRangeQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as ILongRangeQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as ITermRangeQuery, visitor, (vv, dd) => v.Visit(dd)); }); VisitQuery(qd.GeoShape, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Ids, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Intervals, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Prefix, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.QueryString, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Range, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.RankFeature, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Regexp, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.SimpleQueryString, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Term, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Terms, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Wildcard, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Match, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.MatchPhrase, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.MatchPhrasePrefix, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Script, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.ScriptScore, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Exists, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.GeoPolygon, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.GeoDistance, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.GeoBoundingBox, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.RawQuery, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Percolate, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.ParentId, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.TermsSet, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Pinned, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Bool, visitor, (v, d) => { v.Visit(d); Accept(v, d.Filter, VisitorScope.Filter); Accept(v, d.Must, VisitorScope.Must); Accept(v, d.MustNot, VisitorScope.MustNot); Accept(v, d.Should, VisitorScope.Should); }); VisitSpan(qd, visitor); VisitQuery(qd.Boosting, visitor, (v, d) => { v.Visit(d); Accept(v, d.PositiveQuery, VisitorScope.PositiveQuery); Accept(v, d.NegativeQuery, VisitorScope.NegativeQuery); }); VisitQuery(qd.ConstantScore, visitor, (v, d) => { v.Visit(d); Accept(v, d.Filter); }); VisitQuery(qd.DisMax, visitor, (v, d) => { v.Visit(d); Accept(v, d.Queries); }); VisitQuery(qd.DistanceFeature, visitor, (v, d) => { v.Visit(d); }); VisitQuery(qd.FunctionScore, visitor, (v, d) => { v.Visit(d); Accept(v, d.Query); }); VisitQuery(qd.HasChild, visitor, (v, d) => { v.Visit(d); Accept(v, d.Query); }); VisitQuery(qd.HasParent, visitor, (v, d) => { v.Visit(d); Accept(v, d.Query); }); VisitQuery(qd.Nested, visitor, (v, d) => { v.Visit(d); Accept(v, d.Query); }); }
internal void Accept(IQueryVisitor visitor) { visitor.Visit(this); }
public IQuery Accept(IQueryVisitor visitor) { return(visitor.Visit(this)); }
public void Visit(IQueryVisitor visitor) { visitor.Visit(Content); visitor.Visit(OrderModifier); }
public void Visit(IQueryVisitor visitor) { visitor.Visit(this); }
public void Visit(IQueryVisitor visitor) { visitor.Visit((LimitModifierNode)this); }
public void Visit(IQueryVisitor visitor) { visitor.Visit(Content); visitor.Visit(LimitModifier); }
public T Accept <T>(IQueryVisitor <TAtom, T> visitor) => visitor.Visit(this);
internal override void Accept(IQueryVisitor visitor) { visitor.Visit(this); }
public void Walk(IQueryContainer qd, IQueryVisitor visitor) { visitor.Visit(qd); VisitQuery(qd.MatchAll, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.MoreLikeThis, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.MultiMatch, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.CommonTerms, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Fuzzy, visitor, (v, d) => { v.Visit(d); VisitQuery(d as IFuzzyStringQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IFuzzyNumericQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IFuzzyDateQuery, visitor, (vv, dd) => v.Visit(dd)); }); VisitQuery(qd.Range, visitor, (v, d) => { v.Visit(d); VisitQuery(d as IDateRangeQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as INumericRangeQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as ITermRangeQuery, visitor, (vv, dd) => v.Visit(dd)); }); VisitQuery(qd.GeoShape, visitor, (v, d) => { v.Visit(d); VisitQuery(d as IGeoIndexedShapeQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IGeoShapeMultiPointQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IGeoShapeMultiPolygonQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IGeoShapePolygonQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IGeoShapePointQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IGeoShapeMultiLineStringQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IGeoShapeLineStringQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IGeoShapeEnvelopeQuery, visitor, (vv, dd) => v.Visit(dd)); VisitQuery(d as IGeoShapeCircleQuery, visitor, (vv, dd) => v.Visit(dd)); }); VisitQuery(qd.Ids, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Prefix, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.QueryString, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Range, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Regexp, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.SimpleQueryString, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Term, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Terms, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Wildcard, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Match, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Type, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Script, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Missing, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Exists, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.GeoPolygon, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.GeoDistanceRange, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.GeoDistance, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.GeoBoundingBox, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.GeoHashCell, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Limit, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Template, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.RawQuery, visitor, (v, d) => v.Visit(d)); VisitQuery(qd.Not, visitor, (v, d) => { v.Visit(d); Accept(v, d.Filters); }); VisitQuery(qd.And, visitor, (v, d) => { v.Visit(d); Accept(v, d.Filters); }); VisitQuery(qd.Or, visitor, (v, d) => { v.Visit(d); Accept(v, d.Filters); }); VisitQuery(qd.Bool, visitor, (v, d) => { v.Visit(d); Accept(v, d.Must, VisitorScope.Must); Accept(v, d.MustNot, VisitorScope.MustNot); Accept(v, d.Should, VisitorScope.Should); }); VisitSpan(qd, visitor); VisitQuery(qd.Boosting, visitor, (v, d) => { v.Visit(d); Accept(v, d.PositiveQuery, VisitorScope.PositiveQuery); Accept(v, d.NegativeQuery, VisitorScope.NegativeQuery); }); VisitQuery(qd.ConstantScore, visitor, (v, d) => { v.Visit(d); Accept(v, d.Filter); }); VisitQuery(qd.DisMax, visitor, (v, d) => { v.Visit(d); Accept(v, d.Queries); }); VisitQuery(qd.Filtered, visitor, (v, d) => { visitor.Visit(d); Accept(v, d.Query); Accept(v, d.Filter); }); VisitQuery(qd.FunctionScore, visitor, (v, d) => { v.Visit(d); Accept(v, d.Query); }); VisitQuery(qd.HasChild, visitor, (v, d) => { v.Visit(d); Accept(v, d.Query); }); VisitQuery(qd.HasParent, visitor, (v, d) => { v.Visit(d); Accept(v, d.Query); }); VisitQuery(qd.Indices, visitor, (v, d) => { v.Visit(d); Accept(v, d.Query); Accept(v, d.NoMatchQuery, VisitorScope.NoMatchQuery); }); VisitQuery(qd.Nested, visitor, (v, d) => { v.Visit(d); Accept(v, d.Query); }); }