Example #1
0
 protected override AbstractSolrQuery Visit(QueryNode node, SolrQueryMapperState state)
 {
     if (node.NodeType == QueryNodeType.Custom)
     {
         if (node is WithinRadiusNode)
         {
             return(VisitWithinRadius((WithinRadiusNode)node, state));
         }
     }
     return(base.Visit(node, state));
 }
 protected override AbstractSolrQuery Visit(QueryNode node, SolrQueryMapperState state)
 {
     if (node.NodeType == QueryNodeType.Custom)
     {
         if (node is WithinRadiusNode)
         {
             return VisitWithinRadius((WithinRadiusNode)node, state);
         }
     }
     return base.Visit(node, state);
 }
        protected override AbstractSolrQuery Visit(QueryNode node, SolrQueryMapperState state)
        {
            if (node.NodeType == QueryNodeType.Custom)
            {
                if (node is InsidePolygonNode)
                {
                    return(this.VisitInsidePolygon((InsidePolygonNode)node, state));
                }
            }

            return(base.Visit(node, state));
        }
        protected virtual AbstractSolrQuery VisitInsidePolygon(InsidePolygonNode node, SolrQueryMapperState state)
        {
            AbstractSolrQuery abstractSolrQuery = new SolrQueryByField(node.Field, $"Intersects({node.Coordinate.Latitude} {node.Coordinate.Longitude})");

            if (!abstractSolrQuery)
            {
                return(abstractSolrQuery & this.Visit(node.SourceNode, state));
            }

            return(abstractSolrQuery);
        }