Example #1
0
        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;
        }
Example #3
0
 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);
Example #6
0
 public T Accept <T>(IQueryVisitor <IDetailQueryAtom, T> visitor) => visitor.Visit(this);
Example #7
0
 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);
     });
 }
Example #8
0
        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);
            });
        }
Example #9
0
 internal void Accept(IQueryVisitor visitor)
 {
     visitor.Visit(this);
 }
Example #10
0
 public IQuery Accept(IQueryVisitor visitor)
 {
     return(visitor.Visit(this));
 }
Example #11
0
 public void Visit(IQueryVisitor visitor)
 {
     visitor.Visit(Content);
     visitor.Visit(OrderModifier);
 }
Example #12
0
 public void Visit(IQueryVisitor visitor)
 {
     visitor.Visit(this);
 }
Example #13
0
 public void Visit(IQueryVisitor visitor)
 {
     visitor.Visit((LimitModifierNode)this);
 }
Example #14
0
 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);
 }
Example #17
0
        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);
            });
        }